在我的 SConscript 文件中,我有以下这一行:
Program("xtest", Split("main.cpp"), LIBS="mylib fltk Xft Xinerama Xext X11 m")
在与其他库动态链接时,我怎样才能让scons使用mylib.a而不是mylib.so?
编辑:希望尽可能少地使用平台特定的技巧。
在我的 SConscript 文件中,我有以下这一行:
Program("xtest", Split("main.cpp"), LIBS="mylib fltk Xft Xinerama Xext X11 m")
在与其他库动态链接时,我怎样才能让scons使用mylib.a而不是mylib.so?
编辑:希望尽可能少地使用平台特定的技巧。
将完整的文件路径包装在一个File节点中传递将会强制进行静态链接。例如:
lib = File('/usr/lib/libfoo.a')
Program('bar', 'main.c', LIBS = [lib])
将会生成以下链接器命令行
g++ -o bar main.o /usr/lib/libfoo.a
注意,对于此LIBS条目,"-l"标志未传递给链接器。这实际上强制进行静态链接。另一种选择是修改LINKFLAGS以获得所需的内容,但要注意绕过库依赖扫描器 - 库的状态不会被检查以进行重建。