如今我有hello1.cpp和hello2.cpp兩個文件,如今我要生成動態連接庫libhello.so和靜態連接庫libhello.a。如下爲步驟:linux
1.生成動態連接庫: g++ -m32 hello1.cpp hello2.cpp -fPIC -shared -o ../lib/linux32/libhello.so -m32爲生成32位的動態連接庫,-m64位生成64位的動態連接庫。編譯
2.生成靜態連接庫:配置
g++ -m32 hello1.cpp -c -o hello1.o //編譯hello1.cpp 生成中間文件hello1.o搜索
g++ -m32 hello2.cpp -c -o hello2.o //編譯hello2.cpp 生成中間文件hello2.o方法
ar rcs libhello.a hello2.o hello1.o //將hello1.o和hello2.o添加到靜態連接庫配置文件
3.除了生成庫文件,還能夠採用-I參數,引入.o文件。 g++ -m32 hello2.cpp -o hello2 -I./ hello1.o 文件
4.運行時自動加載動態連接庫: g++ -m32 hello.cpp -o hello -L/lib/linux32/ -lname -Wl,--rpath=/lib/linux32/ 其中「-m32」參數是編譯32位的可執行文件;co
「-L」是須要連接的動態連接庫的目錄路徑; 「-l」參數是須要連接的連接庫名稱(例如庫文件位libname.so,那麼-l後面的參數是name);生成
"-Wl,--rpath="參數爲運行時連接動態連接庫目錄的地址; config
5. 運行時自動加載靜態連接庫: g++ -m32 hello2.cpp -o hello2 -I/lib/linux32/ lhello -Wl,--rpath=/lib/linux32/
6.若是不想在運行時連接庫文件,那麼能夠採用export方式,例如: export LD_LIBRARY_PATH=/lib/linux32/ 除了上面兩種方法,還有其餘的方法加載庫文件:
1)在配置文件/etc/ld.so.conf中指定的動態庫搜索路徑。 打開/etc/ld.so.conf 文件並將你存放.h文件的路徑加入。 Ldconfig (是將你修改的配置文件保存導入)
2) /lib 能夠將動態庫放入/lib中
3) /usr/lib 能夠將動態庫放入/usr/lib中