我最近一直在试图在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上),如果我留下引号,它似乎不会扩展变量(至少使用回显)。也尝试删除括号。 –