簡單的問題是這些在編譯期間不必調用庫的方法嗎?我的意思是,我想簡單地調用g ++ main.cpp而不調用g ++ main.cpp -lGL -lGLU -lGLEW -lSTL -lMyMother等等......我知道,makefile或簡單的shell腳本,但是我想使它優雅的方式 - 在cpp代碼中調用這些庫 - 就像'使用GL'一樣。g ++:編譯時沒有-l標誌
回答
由於您使用的是GCC,因此您可以創建/修改specs file以添加所需的標誌。
如果你不喜歡鍵入標誌,你確實應該使用makefile。
嗯,我想你是對的 - 每個人都在使用Makefiles是有原因的。 ;) – 2014-10-29 19:24:01
不要修改規格文件以在其中添加庫。 – 2014-10-29 19:40:49
從技術上講,你可以通過dlopen()
動態加載庫並調用它的函數(我假設你在* nix上)。雖然這不是一回事,我懷疑會讓你的生活更輕鬆。除此之外,沒有指定在源文件中使用哪個庫的便攜方式。
謝謝,得試試這個方法。我只應該記住,如果某件事不起作用,那是因爲我的懶惰。 – 2014-10-29 19:24:38
在Linux上,您可以使用pkg-config和shell擴展。使用pkg-config --list-all
來發現它已知的軟件包(您可以添加.pc
文件來添加新軟件包)。例如,GTK應用mygtkapp.c
可以用
gcc -Wall -g $(pkg-config --cflags gtk+-x11-3.0) -c mygtkapp.c
後來與
gcc -g mygtkapp.o $(pkg-config --libs gtk+-x11-3.0) -o mygtkapp
注意的參數gcc
順序總是問題鏈接進行編譯。當然,使用g++
來編譯C++應用程序GCC。
也考慮使用Makefile
,如this one。然後,只需鍵入make
即可構建您的軟件(例如make clean
來清理構建樹)。
您可能會在您的Makefile
中使用奇怪的技巧,例如用awk
解析你的C++代碼中的一些註釋來提供make
,但我認爲這是一個壞主意。
從技術上講,你仍然可以通過-I
和-D
標誌(在編譯時)和-L
和-l
標誌(在連接時),以gcc
或g++
但pkg-config
實用程序(或make
....)正在產生這些標誌。
如果您使用emacs
編輯源代碼,則可以在C文件末尾添加註釋以設置emacs
的一些編譯命令,請參閱this。
PS。我不建議爲此目的配置您的GCC規格文件。
- 1. g ++等效的編譯器標誌到VC++編譯器標誌
- 2. 編譯時標誌
- 3. g ++沒有編譯我的C++程序
- 4. gcc編譯libavformat代碼,但g ++沒有
- 5. 編譯沒有ros的roscpp(使用g ++)
- 6. g ++在編譯靜態庫時是否有意義添加優化標誌
- 7. C++編譯器標誌11 - 沒有找到計時文件
- 8. 編譯器標誌在Eclipse
- 9. 錯誤與G ++編譯時
- 10. CMake編譯標誌
- 11. 如何使用Rcpp和內聯設置g ++編譯器標誌?
- 12. 如何使用-g調試標誌編譯boost?
- 13. 使用gdb而無需使用「-g」標誌編譯
- 14. #ifdef標誌告訴gcc和g ++編譯器之間的區別?
- 15. 如何將編譯標誌-g添加到make文件中?
- 16. 關於編譯/安裝程序時-l(blah)標誌的兩個基本問題
- 17. 調試jar,這是沒有編譯調試標誌
- 18. 包括同時用在MacOS G ++編譯沒有找到路徑
- 19. G ++編譯Cygwin
- 20. Linux g ++編譯
- 21. Cmake交叉編譯標誌
- 22. 編譯時-pthread標誌的意義
- 23. 運行時附加編譯器標誌
- 24. -fPIC編譯標誌有什麼作用?
- 25. Android L編譯器防止反編譯?
- 26. -L/libpath和/etc/ld.so.conf配置在gcc/g ++中編譯的libpath有什麼區別
- 27. 有沒有gcc的選項丟棄-g標誌?
- 28. 在g ++中使用-mno-cygwin標誌有沒有副作用?
- 29. 如何使用CMake在編譯時定義編譯器標誌?
- 30. 如何在編譯時確定OS/X上的編譯標誌?
不,與VC++不同,沒有辦法通過在源代碼中指定它來告訴GCC哪些庫鏈接到哪個庫。使用makefile。 – 2014-10-29 19:45:47