Issue
Когда команда «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
main.cpp
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
...
int main(void) {
...
}
SConscript
# C++
env = Environment()
env.Append(CXXFLAGS = '-ldl')
print env["CXXFLAGS"]
srcFiles = ['main.cpp']
env.Program('../program', srcFiles)
SConstruct
SConscript('cpp/SConscript', variant_dir='bin/cpp')