本文源于学习linux下通过cmake和Makefile两种方式生成动态链接库.so文件及对.so文件使用的记录:
linux 动态链接库创建及使用参考博文:linux下生成动态链接库并使用(使用cmake)
通过自己编写Makefile文件来生成动态链接库.so文件,在测试中遇到如下错误:
生成可执行程序的命令:gcc hello.c -I/home/xuwei/workspace/hellolib/include -L/home/xuwei/workspace/hellolib/build -lhello -o hello
执行后报的错误:
/tmp/cc3RpAjG.o:在函数‘main’中:
hello.c:(.text+0xa):对‘hello’未定义的引用
collect2: error: ld returned 1 exit status
通过分析,定位到Makefile生成的.so库有问题,将该.so文件替换为参考博文中的cmake生成的.so文件,就能顺利生成出可执行文件,并能成功执行。
关于linux下静态库和动态库补充了解的参考博文:Linux静态库和动态库学习总结