jjzjj

c++ - 如何确定库间依赖关系?

我的项目由几个静态库组成,它们在最后一步链接在一起。现在我遇到了问题,linkorderofthelibraryisimportant(否则我会收到undefinedsymbol链接器错误)。有时我会遇到问题,我必须重新排序链接库(-lcommon-lsetup-lcontrol等)。目前这是一个愚蠢的试错:重新排序,编译,检查错误,重新排序,编译等等。因此,我编写了一个小程序来向我展示库间依赖关系,并为我生成要链接的库的顺序。它从nm中读取已定义的('T'、'B'等)和undefinedsymbol('U')并删除weaksymbols('w'、'W'、'v'和'V')来自“unde

c++ - Ld 神奇地覆盖静态链接的符号

这几天我们一直在处理非常奇怪的问题。我什至无法理解它是如何发生的——当第三方(MATLAB)程序使用我们的共享库时,它会以某种方式用它自己的符号覆盖我们的一些符号(准确地说是增强)。这些符号是静态链接的并且(!!)是本地的。这是交易-我们使用boost1.47,MATLAB有boost1.40。目前,库在从我们的库调用它们的boost(正则表达式)时会出现段错误。所以,这是神奇的:我们没有依赖库,ldd:linux-vdso.so.1=>(0x00007fff4abff000)libpthread.so.0=>/lib/libpthread.so.0(0x00007f1a3fd6500

c++ - ld : library not found for -lrt

我正在尝试运行一个为Ubuntu创建并在MacOS上运行的项目。当我进行make时,出现以下错误:ld:librarynotfoundfor-lrtclang:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)make[2]:***[consumer]Error1make[1]:***[CMakeFiles/consumer.dir/all]Error2make:***[all]Error2我在项目中看不到任何具有该名称的库。谁能解释一下这是什么以及如何解决? 最佳答案

c++ - G++ 找不到 boost 库

我不擅长命令行编译。我的问题是无法编译简单的项目,这取决于Boost。以下是我的尝试记录:$g++-Walltest.cpp-omain/tmp/ccCTvBYE.o:Infunction`__static_initialization_and_destruction_0(int,int)':test.cpp:(.text+0x6b):undefinedreferenceto`boost::system::generic_category()'test.cpp:(.text+0x77):undefinedreferenceto`boost::system::generic_catego

c++ - 如何在 Unix TeamCity 构建代理上设置环境变量 PATH 和 LD_LIBRARY_PATH?

我使用TeamCity在Unix(Solaris)上构建C++。TeamCity调用make,在我的makefile中我需要调用svn。为此,我需要修改PATH和LD_LIBRARY_PATH。我可以在makefile中设置这些,但位置因服务器而异。有谁知道为每个TeamCity构建代理设置这些的方法,例如通过编辑conf/buildAgent.properties?我可以在~/.login等中为TeamCity构建帐户设置它们,但我不希望这样做,因为它是一个共享帐户。-谢谢,巴尼 最佳答案 如您所料,您可以在conf/buildA

c++ - 为什么当派生类调用基类的纯虚函数时 g++ 不报错?

我有一个带有纯虚函数f()的类Base。另一个类Derived派生自Base。我从Derived中调用f()。使用g++,我从链接器中得到一个错误。[agnel@dookutmp]$g++pure_virtual_function_call.cpp/tmp/ccGQLHi4.o:Infunction`Derived::f()':pure_virtual_function_call.cpp:(.text._ZN7Derived1fEv[_ZN7Derived1fEv]+0x14):undefinedreferenceto`VirtualBase::f()'collect2:error:l

C++ 异常和 ld 符号警告

我正在尝试用C++创建异常,我有以下测试代码:#include#include#includeusingnamespacestd;classMyerror:publicruntime_error{private:stringerrmsg;public:Myerror(conststring&message):runtime_error(message){}};intmain(intargc,char*argv[]){throwMyerror("wassup?");}我正在编译这个:icpc-std=c++11-O3-m64编译后我收到这个ld警告:ld:warning:directac

c++ - 链接器映射文件有时有损坏的符号,但并非总是如此

作为构建过程的一部分,我们会在编译可执行文件时生成一个映射文件。例如:g++-Wl,-Map,/tmp/foo.map-ofoofoo.cpp为了尝试从GCC4.3/4.4迁移到GCC4.9,我们设置了一个新的构建服务器。4.9构建服务器生成的映射文件没有损坏的符号名称。4.3/4.4构建服务器生成的map文件可以。例如,用4.3运行上面的代码,我在map文件中截取了这个:.plt0x00000000004007000x90/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../lib64/crt1.o0x0000000000400710_ZN

c++ - collect2.exe : error: ld returned 5 exit status

我最近更新了所有msys2包,现在我无法构建我的项目。错误发生在链接其中一个.dll-target_library.dll时。我不清楚错误消息。状态5是什么意思?collect2.exe:error:ldreturned5exitstatus完整消息:g++-Wl,-s,--relax,--gc-sections-shared-Wl,-subsystem,windows-mthreads-Wl,--out-implib,C:/msys64/workspace/Project_Root_Directory/project/src/../build/release/plugins/libt

python - 关于boost-python : dyld: Symbol not found: _PyBaseObject_Type

当我运行我的代码时,我遇到了一个关于boost-python的问题。就像这样:dyld:Symbolnotfound:_PyBaseObject_TypeReferencedfrom:/opt/local/lib/libboost_python-mt.dylibExpectedin:flatnamespace我的项目几个月前就可以正常运行了。但是现在,当我重新配置环境时,它无法运行。-几个月前,我用homebrew配置环境,就像这样:brewinstallboostbrewinstallpythonbrewinstallboost-pythonbrewinstallopencv(Myp