linux下及Aix下編譯命令總結

 

64位linux下編譯32位程序命令: gcc -m32 test.c -o test32

64位linux下編譯64位程序命令: gcc -m64 test.c -o test64


64位linux下編譯32位 .o 命令:gcc -m32 -c test.c

64位linux下編譯64位 .o 命令:gcc -m64 -c test.c


64位linux下編譯32位靜態庫命令:ar cr libt32.a sotest.o

64位linux下編譯64位靜態庫命令:ar cr libt64.a sotest.o


64位linux下編譯32位動態庫命令:gcc -m32 -g -Wall -shared -fPIC sotest.c -o libt32.so

64位linux下編譯64位動態庫命令:gcc -m64 -g -Wall -shared -fPIC sotest.c -o libt64.so


64位linux下編譯32位調用動態庫程序命令: gcc -m32 test.c -L./ -lt32 -o t32   或者 gcc -m32 test.c libt32.so -o t32 兩者效果一樣

64位linux下編譯64位調用動態庫程序命令: gcc -m64 test.c -L./ -lt64 -o t64   或者 gcc -m64 test.c libt64.so -o t64 兩者效果一樣


查看靜態庫導出函數: nm -s *.a 

查看.a庫文件位數:objdump -a  *.a

查看.so庫文件位數:objdump -a  *.so或者file *.so

-----------------------------------------------------------------------------------------------------------------------

64位Aix下編譯32位程序命令: gcc -maix32 test.c -o test32

64位Aix下編譯64位程序命令: gcc -maix64 test.c -o test64


64位linux下編譯32位 .o 命令:gcc -m32 -c test.c

64位linux下編譯64位 .o 命令:gcc -m64 -c test.c


64位Aix下編譯32位靜態庫命令ar cr libt32.a *.o

64位Aix下編譯64位靜態庫命令ar -X64 cr libt64.a *.o


64位Aix下編譯32位動態庫命令:gcc -maix32 -g -Wall -shared -fPIC sotest.c -o libt32.so

64位Aix下編譯64位動態庫命令:gcc -maix64 -g -Wall -shared -fPIC sotest.c -o libt64.so


64位Aix下編譯32位調用動態庫程序命令: gcc -maix32 test.c libt32.so -o t32

64位Aix下編譯64位調用動態庫程序命令: gcc -maix64 test.c libt64.so -o t64


查看32位靜態庫導出函數: nm *.a 

查看64位靜態庫導出函數: nm -X64 *.a 

查看.so庫文件位數: file *.so

-----------------------------------------------------------------------------------------------------------------------

64位linux編譯32程序時錯誤提示:/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h:No such file or directory

# yum -y install glibc-devel.i386


1、64爲linux編譯如果不帶m64參數編譯出來的程序依然爲64位

2、編譯目錄下執行export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH,可解決找不到當前目錄so庫的問題

3、64位程序在頭文件定義加上 #pragma pack(4) 表示結構體以四個字節對齊 ,否則可能會出現一個包含Int類型的結構體 int類型和緊挨的一個類型 間隔8個字節的情況 

 

顯式調用時不要在MakeFile中加"-l庫名稱",直接dlopen 然後獲取函數地址調用即可。
隱式鏈接時需要包含頭文件加上"-l庫名稱",直接可以調用了。
靜態鏈接時需要包含頭文件加上"-l庫名稱",這時的庫應該爲.a庫。

 

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