[FreeBSD-users-jp 96511] Re: FreeBSD-12.1 の libGLU.so の問題

内藤 祐一郎 naito.yuichiro @ gmail.com
2019年 12月 5日 (木) 14:00:10 UTC


内藤です。

> 2019/12/05 19:25、Kouichi Hirabayashi <kh @ mogami.com>のメール:
> 
> 例えば、下記の最低限のプログラム
> 
> -- a.cpp --
> #include <GL/glut.h>
> #include <iostream>
> 
> int main(int argc, char *argv[])
> {
> }
> --
> 
>> 
>  g++ -o a a.cpp -I/usr/local/include -L/usr/local/lib -lglut -lGLU -lm
> 
> でコンパイルすると再現できます。

 g++ -o a a.cpp -I/usr/local/include -L/usr/local/lib -lc++ -lglut -lGLU -lm

と -lc++ を真っ先にリンクしてみてください。
#あと -Wl,-rpath=/usr/local/lib/gcc9 も入れた方がよいです。

私もこの辺りの処理を詳しくは知らないのですが、
g++ のランタイムは一部が clang++ のランタイムに依存しているようです。

いつの頃からかは調べきれていませんが、
clang++ のランタイムは起動時に正しく初期化されないと動かなくなったようで、
強制的に最初にリンクしてあげると clang++ のランタイムの初期化処理が動いて
うまく行くようです。

clang++ でコンパイルすると g++ のランタイムがリンクされないため、
clang++ のランタイムが必ず初期化されるので問題ありません。

-- 
内藤 祐一郎
naito.yuichiro @ gmail.com



freebsd-users-jp メーリングリストの案内