工具库不是lib开头该怎么办?该如何链接

前言:

开发不规范,同事两行泪

问题:

某位同事提供的公共库是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来实现不规范命名的库链接。

结语

开发不规范,同事两行泪

猜你喜欢

转载自blog.csdn.net/u011461385/article/details/90482574