Linux 使用bjam构建和使用共享库 使用Ubuntu的BJAM,我正在构建一个C++共享库,并尝试将它用于可执行文件中。我必须建立为共享,因为它不会链接为静态(大量未定义的引用出现)。那很好
两个相关问题: 1) 我的exe项目(testServerHub)使用Jamfiles的继承权,依赖于共享库(pythonManager)。以下是exe的JAM文件:Linux 使用bjam构建和使用共享库 使用Ubuntu的BJAM,我正在构建一个C++共享库,并尝试将它用于可执行文件中。我必须建立为共享,因为它不会链接为静态(大量未定义的引用出现)。那很好,linux,gcc,ubuntu,bjam,boost-build,Linux,Gcc,Ubuntu,Bjam,Boost Build,两个相关问题: 1) 我的exe项目(testServerHub)使用Jamfiles的继承权,依赖于共享库(pythonManager)。以下是exe的JAM文件: echo "Compiling serverHub//test" ; # declare project name project serverHub//testServerHub : build-dir ../_gcc/intermediate ; # build unit-test using these
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 ;
echo“编译serverHub//test”;
#声明项目名称
project serverHub//testServerHub
:build dir../\u gcc/mediate
;
#使用这些源文件、相关库和设置构建单元测试
exe testServerHub
:#来源
..\\\\\\common\\0\u 8\u 1\\test\\runner.cpp
successfulTest.cpp
#按路径和项目名称列出的依赖库
../controller/pythonManager//pythonManager
/boost//单元测试框架
:#设置
共享
;
安装..\\bin:testServerHub;
这是我的文件:
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 ;
echo“编译serverHub/controller//pythonManager”;
#声明项目名称
project serverHub/controller//pythonManager
:要求
乌尔斯尤服务器中心
:build dir.././_gcc/mediate
;
#使用这些源文件和设置构建库
lib pythonManager
:../../../common/0_8_1/controller/pythonManager/pythonManager.cpp
../../../../common/0_8_1/controller/pythonManager/cppcinterfacebase.cpp
cppcInterfaceServerHub.cpp
/boost/python//boost\u python
/用户配置//python
:共享
;
#复制和重命名
安装.././lib:pythonManager;
如果我运行“bjam pythonManager”,则会生成pythonManager共享库并将其复制到我的项目库文件夹(通过最终安装命令)。但是,如果运行“bjam测试”,则会生成testServerHub和pythonManager,但不会将libpythonManager.so复制到项目库文件夹-安装命令不会运行
2) 好的,作为一种临时解决方法,我首先构建libpythonManager.so,然后构建testServerHub可执行文件。编译和链接。在运行时,可执行文件抱怨无法找到libpythonManager.so。这并不奇怪,因为运行时链接器不知道我的项目库文件夹。我如何告诉它在某个目录中查找共享库?或者,如果install命令对依赖库生成没有影响,如何将libpythonManager.so安装到/usr/local/lib中
多谢各位
Si我认为您可以在exe JAM文件中使用
install ..\\bin : testServerHub : <install-dependencies>on <install-type>LIB ;
install..\\bin:testServerHub:on LIB;
这将安装exe所依赖的所有库(LIB)
参考例句 我认为您可以在exe JAM文件中使用
on
,如
install ..\\bin : testServerHub : <install-dependencies>on <install-type>LIB ;
install..\\bin:testServerHub:on LIB;
这将安装exe所依赖的所有库(LIB)
参考例句 一种方法是使用单元测试规则而不是exe规则。在这种情况下,共享库在运行时以某种方式链接。但这对我的主可执行文件没有帮助。在linux上执行此操作的正确方法是什么?一种方法是使用单元测试规则而不是exe规则。在这种情况下,共享库在运行时以某种方式链接。但这对我的主可执行文件没有帮助。在linux上这样做的正确方法是什么?