У меня уже установлены библиотеки C ++ boost на моей машине Fedora10, но я хочу использовать более новую версию, которую я храню в некотором месте в моей домашней папке. Я хочу, чтобы g ++ использовал файлы включения и библиотеки из папки моей домашней папки вместо папки по умолчанию (/usr/include and /usr/lib64
).
В этом отношении я также объявил CPLUS\_INCLUDE\_PATH and LIBRARY\_PATH
переменные окружения в моем ~/.bashrc
файле, как объяснено здесь .
Теперь, когда я бегу,
g++ -o hello.so -fPIC hello.cpp -shared -lboost_python
Препроцессор использует включаемые файлы из моей домашней папки, переопределяя местоположение по умолчанию (как и должно быть, потому что CPLUS\_INCLUDE\_PATH
имеет более высокий приоритет в пути поиска). Но компоновщик, похоже, не следует тому же правилу приоритета. Он всегда использует libboost_python.so из местоположения по умолчанию /usr/lib64
вместо первого поиска LIBRARY\_PATH
. Он только ссылается на библиотеку libboost\_python.so
в моей домашней папке, когда я явно указываю с помощью переключателя -L
. Это действительно неудобно.