scons编译
1. 能不能只使用G++这一个程序来编译源文件
CreateProcess是WIn内核的函数。
你使用的是MinGW G++编译器:
如果你在程序中隐式使用了这个函数,请确保链接器引用到了MinGW组件W32API的库文件kernel32.a。
如果你在程序中显示使用了这个函数,请确保包含里MinGW组件W32API的头文件<windows.h>,以及链接器引用到了MinGW组件W32API的库文件kernel32.a。
如果你使用的不是MinGW的G++编译器:
你可以尝试引用MinGW的W32API库或微软的Platform SDK库,参考以上两条(kernel32.a->kernel32.lib)。
以上或许答非所问。现在回答“仅仅用G++.EXE来编译”的问题:对MinGW G++,如果你只有g++.exe一个文件,你大概可以成功编译不依赖任何外部库的程序,你无法链接因为g++不是链接器(做链接器时引用ld)且大部分情况下都会有外部库的依赖。
2. 如何将scons工具集成到python中
在Windows或者linux下,SConstruct文件相当于MakeFile,使用SCONS编译,需输入scons.bat(scons),后面带上编译选项options(如SConstruct所在的路径)。观察scons.bat这个脚本,可以在其他Python代码中,将SCONS工具当作一个函数来调用。这个函数就是Scons.Script.main(),这个main函数将解析命令行中的编译选项,通过sys.argv[1:]来传入。所以只需修改这个函数,就可以以函数的方式调用,不需要通过如Popen等方式在代码中启动scons。
先找到SCONS安装的目录,如C:\\Python27\Scons-2.3.1包,将Scons\Script\Main.py中main()函数声明中,添加一个传入参数,变为:
def main(args_):
同时将_exec_main(Parser,Values)声明,也变为:
__exec_main(args_,Parser,Values)
然后main(args_)通过调用__exec_main(args_,Parser,Values),将参数传给__exec_main,在__exec_main中再将sys.argv[1:]替换为args.split().
修改完Main.py之后,执行如下,实现替换二进制源文件(Main.pyc):
>>import py_compile
>>py_compile(r‘C:\\Python27\\Scons-2.3.1\\Scons\\Script\\Main.py‘)
使用如下代码测试:
>>import os
>>import sys
>>sys.path=[os.path.join(sys.prefix,‘Scons-2.3.1‘)]+sys.path
>>import Scons.Script
>>Scons.Script.main(‘.‘)
Scons工具正常使用。
3. win下怎样编译mongodb
Mongodb 是采用 Scons 来构建的。Scons是一个Python写的自动化构建工具,从构建这个角度说,它跟GNU make是同一类的工具。所以要编译MongoDB的C语言驱动,不仅要有C/C++开发环境,而且还要有Python环境及Scons库。
编译环境:Windows 2008 + Visual Studio 2010 + Python 2.7 + SCons 2.3.0;其中Python编译器主要有两个版本(2.7和3.x),请务必安装Python2.7,因为SCons2.3.0仅支持Python2.x编译器,并且Python2.7是当前使用最为广泛的版本。
下载地址:
Python2.7 http://www.python.org/download/releases/2.7.5/
SCons2.3.0 http://www.scons.org/
Mongo-c-driver https://github.com/mongodb/mongo-c-driver(GitHub托管)
假设当前操作系统上已经配置了C/C++开发环境(Visual Studio 2010);首先安装Python2.7,安装目录默认为C:/Python27;然后安装Scons2.3.0,安装Scons2.3.0时会自动检测Python安装目录,并将安装到Python中的Scripts目录;增加环境变量: C:\Python27 与 C:\Python27\Scripts 到PATH;编译环境搭建完毕。
下载mongo-c-driver并解压,在“命令提示符”(DOS模拟环境cmd.exe)下进入到mongo-c-driver的解压目录,例如解压到C盘根目录,则路径为C:\mongo-c-driver-master;在C:\mongo-c-driver-master>提示符下,输入SCons –m32 –c99回车即可;编译完成后会在mongo-c-driver目录中生成两个动态链接库bson.dll和mongoc.dll,以及相应的bson.lib和mongoc.lib。
注:在开发程序进行编译时,需要在项目属性中配置“C/C++“->“预处理器定义”,预定义四个宏MONGO_HAVE_STDINT,MONGO_HAVE_UNISTD,MONGO_USE__INT64,MONGO_USE_LONG_LONG_INT;在"VC++目录”->“包含目录"中,添加C:\mongo-c-driver-master\src目录,包含mongo-c-driver头文件目录;在"链接器”->“输入”->“附加依赖项"中,添加bson.lib和mongoc.lib库,链接mongo-c-driver库,即可编译程序。
4. 怎样将scons调用外部程序生成的代码文件加入编译列表中
比较好的方法是使用makefile. 首先安装make工具, 运行make -v, 如果正常返回版本信息就说明已经装好了。
然后在代码的目录里新建一个名为makefile的文本文件,
5. 如何编译opencontrail-vrouter
1. 安装依赖。
2. 建立sandbox,也就是随便建立一个文件夹即可,我是使用了contrail-build这个文件夹,因为其中有SConstruct文件。
3. 按照contrail-build/README.md中的文件夹结构下载相应的组件,例如third_party就去下载contrail-third-party,contrail估计很久没人维护了,build不是很好做。
4. 全部按照文件夹结构下载完成后,先要去third_party中fetch第三方库。
5. 最后在根目录运行scons即可。我那边把controller注释掉了,因为编译那个总是提示“虚拟内存不足”。
6. scons 怎么忽视某个.c文件
介绍,scons用的是python语法。需要安装python和scons后才能运行,能够跨平台。比较automake自动生成makefile文件,scons可以认为直接是make的功能,因为只需要执行scons命令就等于执行了make的功能。
现在有一个hello.c的文件。
新建一个SConstruct文件,是一个python脚本文件。
Program('hello.c') 编译hello.c并生成.o文件和可执行文件
Object('hello.c') 编译hello.c但只生成生成.o文件
这两个方法都是python的method。
如果想执行clean操作,我们不需要再象makefile那样指名make clean语句,而是直接执行scons -c 或者scons -clean就可以。程序会根据SConstruct文件内容自动清除。
SConstruct的读取和执行顺序是彼此独立的,直接看以下例子。
SConstruct文件内容:
print "Calling Program('hello.c')"
Program('hello.c')
print "Calling Program('goodbye.c')"
Program('goodbye.c')
print "Finished calling Program()"
7. 如何编译scons release 源码
找不到libQtGui.so这个库,添加环境变量LIBRARY_PATH=/opt/Qt4.7/lib试试另外你使是用arm-linux-gcc编译程序,需要保证QT下的libQtGui.so库也是用arm-linux-gcc编译的,否则编译链接会出问题
8. scons怎么编译别的文件夹 ubuntu
因为SCons是用Python编写的,所以你必须在使用SCons之前安装好Python。你在安装Python之前,应该注意查看Python是否在你的系统里已经可用了(在系统的命令行中运行python -V或python --version)。
$python -V
Python 2.5.1
在一个Windows系统里,
C:\>python -V
Python 2.5.1
如果Python没有安装,你会看到一条错误消息比如“command not found”(在UNIX或Linux里)或"python is not recognized as an internal or external command, operable program or batch file"(在Windows里)。在这种情况下,在你安装SCons之前需要先安装Python。
有关下载和安装Python的信息可以从http://www.python.org/download/得到。
2、从预编译包中安装SCons
2.1、在Red Hat(或者基于RPM)Linux系统里安装SCons
在使用RPM(Red Hat Package Manager)的Red Hat Linux,Fedora或者任何其他Linux发行版里,SCons是预编译好的RPM格式,准备被安装的。你的发行版可能已经包含了一个预编译好的SCons RPM。
如果你的发行版支持yum安装,你可以运行如下命令安装SCons:
#yum install scons
如果你的Linux发行版没有包含一个特定的SCons RPM文件,你可以下载SCons项目提供的通用的RPM来安装。这会安装SCons脚本到/usr/bin目录,安装SCons库模块(library moles)到/usr/lib/scons。
从命令行安装,下载合适的.rpm文件,然后运行:
#rpm -Uvh scons-2.1.0-1.noarch.rpm
2.2、在Debian Linux系统里安装SCons
如果你的系统已经连上了因特网,你可以运行如下命令来安装最新的官方Debian包:
#apt-get install scons
2.3、在Windows系统里安装SCons
SCons提供了一个Windows installer,使得安装变得非常容易。从http://www.scons.org/download.php下载scons-2.1.0.win32.exe。然后你需要做的就是执行这个文件。
3、在任何系统里编译和安装SCons
如果你的系统里没有一个预编译的SCons包,你可以使用本地python distutils包很容易地编译和安装SCons。
第一步就是下载scons-2.1.0.tar.gz或scons-2.1.0.zip,地址http://www.scons.org/download.html。
解压下载的文件,会创建一个叫scons-2.1.0的目录,进入这个目录执行如下命令安装SCons:
#cd scons-2.1.0
#python setup.py install
这将会编译SCons,安装scons脚本到python目录(/usr/local/bin或C:\Python25\Scripts),同时会安装SCons编译引擎到python使用的库目录(/usr/local/lib/scons或C:\Python25\scons)。因为这些都是系统目录,你可能需要root或管理员权限去安装SCons。
3.1、编译和安装多个版本的SCons
SCons的setup.py脚本有一些扩展,这些扩展支持安装多个版本的SCons到不同的位置。这让下载和体验不同版本的SCons变得很容易。
安装SCons到指定版本的位置,调用setup.py的时候增加--version-lib选项:
#python setup.py install --version-lib
这将会安装SCons编译引擎到/usr/lib/scons-2.1.0或C:\Python25\scons-2.1.0目录。
3.2、安装SCons到其他的位置
你可以安装SCons到其他的位置,而不是默认的位置,指定--prefix=选项:
#python setup.py install --prefix=/opt/scons
这将会安装scons脚本到/opt/scons/bin,安装编译引擎到/opt/scons/lib/scons。
你可以同时指定--prefix和--version-lib,这个时候setup.py将会安装编译引擎到相对于指定prefix的特定版本的目录,在刚才的例子上加上--version-lib,将会安装编译引擎到/opt/scons/lib/scons-2.1.0。
3.3、没有管理员权限的情况下编译和安装SCons
如果你没有权限安装SCons到系统目录,使用--prefix选项安装到你选择的其他的位置。例如,安装SCons到相对于用户$HOME目录的合适的位置,scons脚本安装到$HOME/bin,编译引擎安装到$HOME/lib/scons,使用如下命令:
#python setup.py install --prefix=$HOME
