在根目录中运行命令“ scons”时,scons最终将运行命令“ g ++ -o bin / program bin / cpp / main.o”,这将返回错误:
"undefined reference to 'dlopen', 'dlerror', 'dlsym', 'dlerror'"
这个未定义的参考问题可以通过'-ldl'编译参数来解决,但是由于某些原因,scons不会附加它。
如何获取scons以将'-ldl'参数添加到g ++命令。
。
我的项目设置如下(为简化堆栈溢出目的而简化):
projectFolder/
├──bin/
│ ├─cpp/
│ └─Future Compiled Binary
│
├──cpp/
│ ├─SConscript
│ └─main.cpp
│
└──SConstruct
#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)
SConscript('cpp/SConscript', variant_dir='bin/cpp')
答案 0 :(得分:2)
不要使用CXXFLAGS链接库。您应该这样做:
env.Program('../program', srcFiles, LIBS=['dl'])