我正在學習C++,我從命令行編譯。當試圖添加第三方庫時,我遇到了一個問題。我無法找出鏈接器系統。有誰知道一個很好的教程或類似的東西?gnu從命令行編譯
例如,我想玩SDL2庫,並使用像這樣的命令。
c++ -I/Library/Frameworks/SDL2.framework/Headers -L/Library/Frameworks/SDL2.framework/ -lSDL2 helloworld.cpp
,我得到的錯誤LD:庫找不到-lSDL2
我正在學習C++,我從命令行編譯。當試圖添加第三方庫時,我遇到了一個問題。我無法找出鏈接器系統。有誰知道一個很好的教程或類似的東西?gnu從命令行編譯
例如,我想玩SDL2庫,並使用像這樣的命令。
c++ -I/Library/Frameworks/SDL2.framework/Headers -L/Library/Frameworks/SDL2.framework/ -lSDL2 helloworld.cpp
,我得到的錯誤LD:庫找不到-lSDL2
我找到了答案。以下命令正確編譯。包含聲明必須更改爲...
#include<SDL2/SDL.h>
and the correct compile command is...
c++ -o helloworld helloWorld.cpp -framework SDL2
我也可以使用g ++。在我的系統上,C++和g ++都是同一個gnu編譯器的符號鏈接,它恰好是我在系統上安裝的最新版本。
選項-L是unix鏈接器選項,不適用於MAC。 GCC的開發人員非常友好,能夠以框架形式包含MAC特定的鏈接器選項。這些服務將遵循MAC如何以及他們喜歡存儲圖書館的傳統。你可以用逗號分隔幾個框架。因此,例如,我可以做也只要-framework SDL2,SDL2_mixer作爲源具有
#include<SDL2_mixer/SDL_mixer.h>
當編譯圖書館這個默認的搜索位置/庫/框架。 include語句是跨平臺compatable和MAC GNU鏈接都知道,如果我說
#include<SDL2/SDL.h>
是該頭將在/Library/Frameworks/SDL2.framework/Headers
的-ipath選項仍然發現在mac上工作,並可用於傳遞標題和源文件的替代搜索位置,就像它在unix中工作一樣。
你需要把最後上線的鏈接標誌:
g++ -I/Library/Frameworks/SDL2.framework/Headers helloworld.cpp -L/Library/Frameworks/SDL2.framework/ -lSDL2
[Linker order -GCC](http://stackoverflow.com/questions/45135/linker-order-gcc) –
的可能重複不確定它是否重複,因爲這不是報告的問題,除非你從示例中可以看出,這實際上是問題,如果是這樣,您可以通過指出來幫助用戶,然後也許他們可以刪除他們的問題。 – mydoghasworms
他的問題是特定於多個鏈接庫的順序,只是試圖使用一個庫。 – citizen2191629