現在做的這個專案用到的是開發板是mips晶元,所以無論是在編譯我自己的源**時,還是對方的靜態庫,我都要使用mips的gcc,也就是在我的pc裝好交叉編譯環境。
交叉編譯環境的概念
在pc平台上裝上特定嵌入式開發的編譯環境,對於嵌入式開發的源**,可以用其編譯環境在pc平台上編譯源**。
交叉編譯時候如何配置連線庫的搜尋路徑
交叉編譯的時候不能使用本地(i686機器,即pc機器,研發機器)機器上的庫,但是在做編譯鏈結的時候預設的是使用本地庫,即/usr/lib,/lib兩個目錄。因此,在交叉編譯的時候,要採取一些方法使得在編譯鏈結的時候找到需要的庫。
首先,要知道:編譯的時候只需要頭文件,真正實際的庫文件在鏈結的時候用到。 (這是我的理解,假如有不對的地方,敬請網上各位大俠指教) 然後,講講如何在交叉編譯鏈結的時候找到需要的庫。
(1)、交叉編譯時候直接使用-l和-i引數指定搜尋非標準的庫文件和頭文件的路徑。例如:
mips-linux-uclibc-gcc test.c -l/usr/local/mips/2.95.3/mips-linux/lib -i/usr/local/mips/2.95.3/mips-linux/include
(2)、使用ld.so.conf文件,將用到的庫所在文件目錄新增到此文件中,然後使用ldconfig命令重新整理快取。
(3)、使用如下命令:
$ export ld_library_path=$ld_library_path:/usr/local/mips/2.95.3/mips-linux-lib
通過環境變數ld_library_path指定動態庫搜尋路徑(!)。
交叉編譯環境下靜態庫的製作與測試
1 編寫my print.c原始檔,內容如下 include void cout const char message 2 編寫my lib.h標頭檔案,內容如下 ifndef my lib h define my lib h void cout const char endif 3 編寫test ...
編譯靜態庫編譯動態庫
編譯靜態庫 cr標誌告訴ar將object檔案封裝 archive 我們可以使用nm s 命令來檢視.a檔案的內容 ar cr libmyhello.a hello.o 或 cvr 編譯動態庫 gcc c fpic test1.c gcc c fpic test2.c fpic告訴gcc將源 編譯成...
交叉編譯jsoncpp靜態庫
許多實用cmake的開源專案在移植到其他平台時,還是比較麻煩的。這裡以jsoncpp為例。首先,我本機的交叉編譯工具及目錄是 which arm linux gnueabihf gcc root board tools gcc linaro arm linux gnueabihf 4.7 2013....