Linux 使用bjam构建和使用共享库 使用Ubuntu的BJAM,我正在构建一个C++共享库,并尝试将它用于可执行文件中。我必须建立为共享,因为它不会链接为静态(大量未定义的引用出现)。那很好

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

两个相关问题:

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 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上这样做的正确方法是什么?