Xcode10以降の Mojave, HighSierraにおいて、OpenGL, GLUTを用いたC++ファイルのコンパイルを行うと以下のような警告がされます。なお、コンパイル自体は成功するので無視できますが、せっかくなので全て修正しましょう。
(はじめての記事なので見づらいところ・知識不足などご容赦ください…!笑)
$ g++ -framework OpenGL -framework GLUT -framework Foundation hoge.cpp -Wno-deprecated
ld: warning: text-based stub file /System/Library/Frameworks//OpenGL.framework/OpenGL.tbd and library file /System/Library/Frameworks//OpenGL.framework/OpenGL are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//GLUT.framework/GLUT.tbd and library file /System/Library/Frameworks//GLUT.framework/GLUT are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks//Foundation.framework/Foundation.tbd and library file /System/Library/Frameworks//Foundation.framework/Foundation are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.tbd and library file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.tbd and library file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib are out of sync. Falling back to library file for linking.
シンボリックリンクを作成
warningの表示では/System/Library/Frameworks/*.framework
が見つからないという表示ですが、実際に読み込まれているのは/Library/Frameworks/*.framework
のようです。
$ ls -la /Library/Frameworks/
で見るとおそらくOpenGL.frameworkやGLUT.frameworkは見当たらないはずです。
そこで、以下のコマンドでシンボリックリンクを作成します。
$ sudo ln -s -i /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework /Library/Frameworks
$ sudo ln -s -i /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/GLUT.framework /Library/Frameworks
$ sudo ln -s -i /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework /Library/Frameworks
ここで一度コンパイルしてみると…
$ g++ -framework OpenGL -framework GLUT -framework Foundation hoge.cpp -Wno-deprecated
ld: warning: text-based stub file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.tbd and library file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib are out of sync. Falling back to library file for linking.
ld: warning: text-based stub file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.tbd and library file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib are out of sync. Falling back to library file for linking.
warningが5つから2つに減っていますね。
残りのwarningについて
残りの2つについては力尽きました。何か分かる方、情報提供していただけると助かります。