先記錄下要點吧:
1,c和c++的混合程式設計,是否加extern C,gcc和g++的差別
2,靜态庫和動态庫的生成及連結
3,動态庫連結靜态庫,則靜态庫生成中間程式(如.o時)需增加-fPIC參數
4,-fPIC -shared的真正含義,及該參數放置于-o之前或之後的差別(未查詢到,求大神告知)
封裝成靜态庫.a,不需要加-fPIC 和 -shared參數,動态庫需要。
但是如果封裝成的靜态庫後續要編譯到一個動态庫中去,則封裝成靜态庫時也需要加-fPIC參數
5,nm指令可以查詢庫中是否實作了函數,待查詢具體用法
eg:nm xxx.a |grep function_name
如果是.c的檔案封裝的庫,可以查詢出function_name
如果是c++檔案封裝成的庫,查詢到的function_name會有字首和字尾,因為C++有重載,編譯成.c的形式會加上前字尾用來區分
6,某些參數不生效時,先看看程式中是否有同名檔案,如-I不生效
7,不同linux系統編譯出來的庫,不一定相容。如centos環境下安裝的opencv,相關的庫和程式移植到ubuntu環境,可能會編譯不通過,必須在ubuntu下重新安裝opencv才可行。