gpt4 book ai didi

linux - 使用 bjam 构建和使用共享库

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:45 28 4
gpt4 key购买 nike

在 ubuntu 上使用 bjam,我正在构建一个 c++ 共享库并尝试在可执行文件中使用它。我必须构建为共享,因为它不会链接为静态(出现许多 undefined reference )。没关系。

两个相关问题:

1) 使用 Jamfiles 的层次结构,我的 exe 项目 (testServerHub) 依赖于共享库 (pythonManager)。这是 exe 的 Jamfile:

echo "Compiling serverHub//test" ;

# declare project name
project serverHub//testServerHub
: build-dir ../_gcc/intermediate
;

# build unit-test using these source files, dependent libraries and settings
exe testServerHub
: # Source
..\\..\\..\\common\\0_8_1\\test\\runner.cpp
successfulTest.cpp

# Dependent libraries by path and project name
../controller/pythonManager//pythonManager
/boost//unit_test_framework

: # Settings
<link>shared
;

install ..\\bin : testServerHub ;

这是我的 lib Jamfile:

echo "Compiling serverHub/controller//pythonManager" ;

# declare project name
project serverHub/controller//pythonManager
: requirements
<define>URTH_SERVERHUB
: build-dir ../../_gcc/intermediate
;

# build library using these source files and settings
lib pythonManager
: ../../../../common/0_8_1/controller/pythonManager/pythonManager.cpp
../../../../common/0_8_1/controller/pythonManager/cppInterfaceBase.cpp
cppInterfaceServerHub.cpp
/boost/python//boost_python
/user-config//python
: <link>shared
;

# copy and rename
install ../../lib : pythonManager ;

如果我运行“bjam pythonManager”,则会构建 pythonManager 共享库并将其复制到我的项目 lib 文件夹(通过最终安装命令)。但是,如果我运行“bjam test”,则会构建 testServerHub 和 pythonManager,但不会将 libpythonManager.so 复制到项目 lib 文件夹 - 安装命令不会运行!

2) 好的,作为临时解决方法,我首先构建 libpythonManager.so,然后构建 testServerHub 可执行文件。编译和链接。在运行时,可执行文件提示无法找到 libpythonManager.so。不足为奇,因为运行时链接器不知道我的项目 lib 文件夹。我如何告诉它在某个目录中查找共享库?或者如果安装命令对依赖库构建没有影响,我如何将 libpythonManager.so 安装到/usr/local/lib?

非常感谢

最佳答案

我认为你可以使用 <install-dependencies>on在 exe Jamfile 中,如在

install ..\\bin : testServerHub : <install-dependencies>on <install-type>LIB ;

这将安装 exe 所依赖的所有库 (LIB)。

参见例如 http://www.boost.org/doc/tools/build/doc/html/bbv2/tasks/installing.html作为引用。

关于linux - 使用 bjam 构建和使用共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2116046/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com