我最近一直在試圖在Mac上編寫一個opengl程序,並將其作爲控制檯應用程序部署並分發給其他Mac用戶。G ++:鏈接動態(dylib)庫
由於該程序是用C++編寫的,我決定使用g ++。我的程序需要使用OpenGL框架,GLFW和GLEW。我的/ usr/local/lib文件夾中有GLFW和GLEW庫,我的/ usr/local/include文件夾中有頭文件。我的主文件叫做main.cpp。 GLFW動態加載庫稱爲libglfw.3.2.dylib,GLEW動態加載庫稱爲libGLEW.2.0.0.dylib。
當我編譯使用下面的命令從所述的main.cpp文件的目錄以g ++:
g++ -arch x86_64 -framework OpenGL -I/usr/local/include -L/usr/local/lib -o Main main.cpp -lglfw.3.2 -lGLEW.2.0.0
一切正確編譯和程序運行。
但是,這通過絕對路徑鏈接庫:/ usr/local/lib。這意味着當我將可執行文件移動到另一臺計算機時,它不會運行。我需要在每臺計算機上加載dylib。所以,我想將它們移動到有我的main.cpp文件的文件夾,並使用$(CURDIR)
鏈接到我的當前目錄:
g++ -arch x86_64 -framework OpenGL -I/usr/local/include -L'$(CURDIR)' -o Main main.cpp -lglfw.3.2 -lGLEW.2.0.0
這不起作用,因爲由於某種原因,它似乎並沒有認識到「$ (CURDIR)'作爲當前目錄,或者它可能不是一個有效的變量。
我正在尋找一種方法來鏈接我的dylibs,以便我可以將我的可執行文件移動到任何計算機並使其工作。
任何幫助,將不勝感激。
它以什麼方式不起作用? –
它根本無法將路徑識別爲當前目錄的路徑。 –
不確定,但嘗試從-L'$(CURDIR)'中刪除引號。在我的MSYS shell(在Windows上),如果我留下引號,它似乎不會擴展變量(至少使用回顯)。也嘗試刪除括號。 –