链接 静态库 和 .o 文件 生成 动态库中导出符号的问题
需求是这样的:假如我现在有两个文件 main.o 和 libmylib.a
main.o中包含对用户的接口函数
libmylib.a中包含有一些底层的API,主要为main.o服务。但是其中也有一些对用户开放的接口
现在我想把两者链接成一个动态库
gcc -shared main.o -L. -lmylib -o test.so
问题出来了,nm -D test.so时候,libmylib.a中没有被main.o调用函数符号,不可见
哪位高手能指点一二呢?小弟感激不尽~~~~~
main.o中包含对用户的接口函数
libmylib.a中包含有一些底层的API,主要为main.o服务。但是其中也有一些对用户开放的接口
现在我想把两者链接成一个动态库
gcc -shared main.o -L. -lmylib -o test.so
问题出来了,nm -D test.so时候,libmylib.a中没有被main.o调用函数符号,不可见
哪位高手能指点一二呢?小弟感激不尽~~~~~
...全文
相关推荐
linux下用gcc生成静态库和动态库.doc
在实际开发中,可能还需要考虑库版本管理、符号导出等更复杂的问题,但这构成了基础的库创建和使用流程。
链接器的工作过程.zip
引入与导出:对于共享库,链接器会处理引入和导出的符号。引入是指程序使用库中的功能,而导出则表示程序自身提供了可以供其他程序使用的功能。6.
关于链接器的相关内容讲解
链接器是软件开发过程中的重要工具,它负责将编译器生成的多个目标文件(.o 或 .obj 文件)合并成一个可执行文件或者库。在这个过程中,链接器执行了一系列关键任务,包括符号解析、重定位和节区组合等。
通用makefile文件,编译可执行程序,动态静态库
(-g)、优化等级控制(-O0/-O2可切换)、位置无关代码(-fPIC)等关键标志;链接选项区分别配置LDFLAGS用于可执行程序链接,LDLIBS用于指定外部依赖库,同时为动态库和静态库设定专属链接参数
基于Ubuntu2004操作系统与ROSNoetic机器人操作系统框架_在编译前必须手动删除工作空间中的devel和build这两个文件夹以避免因路径差异导致的编译错误_然后使.zip
子目录以及各类目标文件(.o)、静态库(.a)、动态库(.so)和可执行二进制文件;devel文件夹则承载着开发阶段的符号链接结构,包含setup.bash、setup.sh、setup.zsh等环境初始化脚本


