工具庫不是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來實現不規範命名的庫鏈接。

結語

開發不規範,同事兩行淚

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章