为什么scons会忽略我在SConscript中的CXXFlags
Why does scons ignore my CXXFlags in SConscript
问题
当命令"scons"在根目录下运行时,scons最终会运行命令"g++ -o bin/program bin/cpp/main.o",这会return错误:
"undefined reference to 'dlopen', 'dlerror', 'dlsym', 'dlerror'"
这个未定义的引用问题可以通过“-ldl”编译参数解决,但出于某种原因,scons 不会追加它。
如何让 scons 将“-ldl”参数添加到 g++ 命令中。
.
项目设置
我的项目设置如下(为堆栈溢出目的而简化):
projectFolder/
├──bin/
│ ├─cpp/
│ └─Future Compiled Binary
│
├──cpp/
│ ├─SConscript
│ └─main.cpp
│
└──SConstruct
main.cpp
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
...
int main(void) {
...
}
征兵
# C++
env = Environment()
env.Append(CXXFLAGS = '-ldl')
print env["CXXFLAGS"]
srcFiles = ['main.cpp']
env.Program('../program', srcFiles)
S构造
SConscript('cpp/SConscript', variant_dir='bin/cpp')
不要将 CXXFLAGS 用于 link 库。你应该这样做:
env.Program('../program', srcFiles, LIBS=['dl'])
问题
当命令"scons"在根目录下运行时,scons最终会运行命令"g++ -o bin/program bin/cpp/main.o",这会return错误:
"undefined reference to 'dlopen', 'dlerror', 'dlsym', 'dlerror'"
这个未定义的引用问题可以通过“-ldl”编译参数解决,但出于某种原因,scons 不会追加它。
如何让 scons 将“-ldl”参数添加到 g++ 命令中。
.
项目设置
我的项目设置如下(为堆栈溢出目的而简化):
projectFolder/
├──bin/
│ ├─cpp/
│ └─Future Compiled Binary
│
├──cpp/
│ ├─SConscript
│ └─main.cpp
│
└──SConstruct
main.cpp
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
...
int main(void) {
...
}
征兵
# C++
env = Environment()
env.Append(CXXFLAGS = '-ldl')
print env["CXXFLAGS"]
srcFiles = ['main.cpp']
env.Program('../program', srcFiles)
S构造
SConscript('cpp/SConscript', variant_dir='bin/cpp')
不要将 CXXFLAGS 用于 link 库。你应该这样做:
env.Program('../program', srcFiles, LIBS=['dl'])