用g+编译一个使用fltk和OpenGL的文件+;在MacOs上显示错误

用g+编译一个使用fltk和OpenGL的文件+;在MacOs上显示错误,macos,opengl,fltk,Macos,Opengl,Fltk,我正在尝试编译2.cpp文件,它在MacOs上使用OpenGL和fltk。 在使用linux(Fedora)的设备上,我使用以下命令: g++-9-std=c++17 window.cpp prova.cpp-o test-lfltk-lGL-lglut-lGLU-lfltk\u gl 一切都很顺利 在Mac_Os终端上,我尝试使用: g++-framework GLUT-framework OpenGL-lGLU-lfltk-lglut-lGL-framework Cocoa window.c

我正在尝试编译2.cpp文件,它在MacOs上使用OpenGL和fltk。 在使用linux(Fedora)的设备上,我使用以下命令:
g++-9-std=c++17 window.cpp prova.cpp-o test-lfltk-lGL-lglut-lGLU-lfltk\u gl
一切都很顺利

在Mac_Os终端上,我尝试使用:
g++-framework GLUT-framework OpenGL-lGLU-lfltk-lglut-lGL-framework Cocoa window.cpp prova.cpp
我收到了无数个错误(在linux上没有)和警告,例如:

      (Define GL_SILENCE_DEPRECATION to silence these warnings) [-Wdeprecated-declarations]
inline void gl_rectf(int x,int y,int w,int h) {glRecti(x,y,x+w,y+h);}
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Headers/gl.h:2588:13: note: 
      'glMatrixMode' has been explicitly marked deprecated here
extern void glMatrixMode (GLenum mode) OPENGL_DEPRECATED(10.0, 10.14);
            ^
prova.cpp:211:5: warning: 'glLoadIdentity' is deprecated: first deprecated in macOS 10.14 - OpenGL API deprecated. (Define
      GL_SILENCE_DEPRECATION to silence these warnings) [-Wdeprecated-declarations]
    glLoadIdentity();

现在,我还尝试使用通过自制安装的g++-10,执行以下操作:

g++-10-framework OpenGL-framework GLUT window.cpp prova.cpp

但我明白了

    1 | #include <FL/Fl.H>
      |          ^~~~~~~~~
compilation terminated.
prova.cpp:9:10: fatal error: FL/gl.h: No such file or directory
    9 | #include <FL/gl.h>
      |          ^~~~~~~~~
这是macOS中的一种错误,我认为,当您不包含框架时,会出现这种错误


有人知道这里面的问题是什么吗?(2.cpp文件在linux上完美地工作,因此这是MacOs的问题)

以及解决包含文件问题的
-I/usr/local….
选项,请尝试添加

-L /usr/local/Cellar/fltk/1.3.5/lib   (look up the exact folder name with .a and .so files)

可选,它告诉来自g++-10包的链接器在目录中查找库文件本身。另外,如果要显式链接到FLTK,您可能必须使用
-lfltk

好的,我尝试了“g++-10-framework OpenGL-framework GLUT-L/usr/local/cillar/FLTK/1.3.5/lib-i/usr/local/cillar/FLTK/1.3.5/include-lfltk window.cpp prova.cpp”和以“架构x86\u 64的未定义符号”开头的列表:变得很短,但我还是能理解。你知道为什么吗?现在你只安装了32位库(x86,而不是x86_64),你必须在x86_64变体中重新编译/重新安装FLTK。我之前也得到了“架构x86_64的未定义符号”(检查我答案中的输出)。现在,由于“架构x86_64的未定义符号”而导致的错误列表要短得多:“uu z12glitdlefuncpfvve”,引用自:cciPnJdO.o中的uuu Z14CreateMyWindowiPPc“uuu Z13glutSolidConeddii”,引用自:cc1dj4Tw.o中的uu Z11displayConev等等……可能,GLUT也很旧(仅考虑您的错误消息)只有x86。尝试使用“nm/objdump”命令确保GLUT是正确的(在GLUT的.a或.so文件中运行它们。GLUT是最新的。问题是,在macOS上,OpenGL和GLUT已被弃用,您需要使用框架编译它们。我好像错过了包含该框架
-L /usr/local/Cellar/fltk/1.3.5/lib   (look up the exact folder name with .a and .so files)