首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接到-Wl,-E,这意味着什么?

链接到-Wl,-E,这意味着什么?
EN

Stack Overflow用户
提问于 2012-02-25 12:37:14
回答 1查看 3.4K关注 0票数 6

我正在做一个项目,我们使用的是一个带有CPP的Basler Pylon相机。除了图片拍摄之外,我们的大多数其他代码都是用Python编写的,因此我们使用swig包装来自CPP的take_image()-function。

以下是我们对swig和g++的调用:

代码语言:javascript
复制
swig -python -c++ frompytocpp.i

g++ -c -fpic  cppcamera.cpp frompytocpp_wrap.cxx
-I/opt/pylon/genicam/library/CPP/include -I/opt/pylon/include -DUSE_GIGE
-I/usr/include/python2.6

g++ -shared cppcamera.o frompytocpp_wrap.o -o _frompytocpp.so
-L/opt/pylon/lib64 -L/opt/pylon/lib -L/opt/pylon/genicam/bin/Linux64_x64
-L/opt/pylon/genicam/bin/Linux64_x64/GenApi/Generic -Wl,-E -lpylonbase
-lpylonutility

它编译得很好,但在运行时,当试图创建一个相机对象时,会抛出一个异常,该异常似乎与未解决的符号有关。根据camera手册,标志-Wl,-E非常关键,“否则链接器将无法在运行时正确地知道和匹配塔架符号”。我查阅了g++的手册页,意识到-Wl用于将选项传递给链接器,但不知道当传递给-Wl时-E选项会做什么。有没有人?

只有当从python调用拍照函数时,运行时问题才会显现出来。因此,只有cppcamera.cpp的标准编译结合了-Wl,-E才能正常工作,但是当我们在python中创建包装器使用的共享库时,有些东西是不正确的/缺失的。对于g++调用中可能缺少的内容,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2012-02-25 15:10:10

您可以检查help manual of ld (如果gcc被设置为使用ld作为链接器):

-E

--export-dynamic

--no-export-dynamic

在创建动态链接的可执行文件时,使用-E选项或--export-dynamic选项会使链接器将所有符号添加到动态符号表中。动态符号表是运行时从动态对象中可见的符号集。

如果不使用这些选项(或使用--no-export-dynamic选项恢复默认行为),动态符号表通常只包含链接中提到的某些动态对象引用的符号。

如果使用dlopen加载需要引用程序定义的符号的动态对象,而不是其他动态对象,则在链接程序本身时可能需要使用此选项。

如果输出格式支持动态符号表,还可以使用动态列表来控制应该添加哪些符号。请参阅--dynamic-list.的说明。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9444035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档