前言:
开发不规范,同事两行泪
问题:
某位同事提供的公共库是APP_TESTPUB.so,该如何去链接呢?
正文:
在gcc链接的过程中一般是使用-L用来指定动态库存放路径,可以是相对路径,也可以是绝对路径。-l用来表示链接那个动态库或者静态库,同名优先链接静态库。
如下:
## 链接/home/test/lua/lua-5.3.5/lib/liblua-5.3.so
gcc test.c -I./incl -I./ -lxml2 -L/home/test/lua/lua-5.3.5/lib -llua-5.3 -o libtest.so -fPIC -shared
一般做法自己的库如果需要别人链接的话,都要准守库命名的原则以lib开头,但是规范毕竟是规范,总有人不按照规范来,那么碰到不规范的命名如:APP_TESTPUB.so 这样的,我们怎么办呢?总不能站在那里被人喷你很菜吧?
一种做法让公共库的开发改名字,当然存量系统的这么改还是有风险的。还有一种就是将错就错的做法。
如下:
## 链接/home/test/lua/lua-5.3.5/lib/liblua-5.3.so
gcc test.c -I./incl -I./ -lxml2 /home/test/lua/lua-5.3.5/lib/liblua-5.3.so -o libtest.so -fPIC -shared
gcc test.c -I./incl -I./ -lxml2 /home/test/lua/lua-5.3.5/lib/APP_TESTPUB.so -o libtest.so -fPIC -shared
这种做法是直接去掉了-L和-l来实现不规范命名的库链接。
结语
开发不规范,同事两行泪