Почему scons игнорирует мои CXXFlags в SConscript - PullRequest
0 голосов
/ 14 ноября 2018

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')

1 Ответ

0 голосов
/ 14 ноября 2018

Не используйте CXXFLAGS для связи библиотек. Вы должны сделать это:

env.Program('../program', srcFiles, LIBS=['dl'])
...