gcc命令mysql
gcc -I /usr/local/mysql/include mysqlVersion.c -o demo -L /usr/local/mysql/lib -lmysqlclientsql
--I /usr/local/mysql/include:把/usr/local/mysql/include做爲第一個尋找頭文件的目錄,尋找的順序是/usr/local/mysql/include-> /usr/include -> /usr/local/includespa
-L /usr/local/mysql/lib :表示把/usr/local/mysql/lib 做爲第一個尋找庫文件的目錄,尋找順序爲:/usr/local/mysql/lib -> /lib -> /usr/lib -> /usr/local/lib命令行
-lmysqlclient:表示在上面的lib路勁中尋找libmysqlclient動態庫文件(若是gcc編譯選擇中加入了"static"表示尋找libmysqlclient.a靜態庫文件)cd 調試
編譯成功後,產生demo執行程序編譯器
./demo 執行報 ./demo: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory同步
是由於執行查找動態mysqlclient是在/usr/lib,/usr/local/lib下查找,不能查到到,解決辦法修改ld..so.conf把/usr/local/mysql/lib加入進去,並同時執行ldconfig把配置文件修改同步到ld.so.cache裏 ,必需執行ldconfig,不執行就算重啓系統都不生效。io
gcc -c test.s -o test.o :編譯成目標文件test.o不連接, -c 編譯成目標文件不連接,-o:指定輸出文件名,編譯時不加-o,生成文件爲文件名test加.o爲 test.o編譯
gcc test.o -o test:把目標文件test.o連接爲可執行程序test,-o:指定輸出文件名test
------------------------------------gcc經常使用編譯選項---------------------------------------------------
-c -- 只編譯不連接,生成目標文件「.o"
-S -- 只編譯不彙編,生成彙編代碼
-E -- 只進行預編譯,不作其它處理
-g -- 在可執行程序中包含標準調試信息
-o file -- 指定將file文件做爲輸出文件
-v -- 打印出編譯器內部編譯各過程的命令行信息和編譯器的版本
-I dir -- 在頭文件的搜索路徑列表中添加dir目錄
-static -- 進行靜態編譯,即鏈接靜態庫,禁止使用動態庫
-shared -- 1. 能夠生成動態庫文件 2. 進行動態編譯,儘量地連接動態庫,只有沒有動態庫時纔會連接同名的靜態庫(默認選項,便可省略)
-L dir -- 在庫文件的搜索路徑列表中添加dir目錄
-lname -- 連接稱爲libname.a(靜態庫)或則libname.so(動態庫)的庫文件。若兩個庫都存在,則根據編譯方式(-static 仍是-shared)而進行連接
-fPIC(或-fpic) -- 生成使用相對地址的位置無關的目標代碼。而後一般使用gcc 的-static選項從該PIC目標文件生成動態庫文件。