Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Dec 2019 23:00:04 +0900
From:      =?utf-8?B?5YaF6JekIOelkOS4gOmDjg==?= <naito.yuichiro@gmail.com>
To:        Kouichi Hirabayashi <kh@mogami.com>
Cc:        FreeBSD-users-jp <freebsd-users-jp@freebsd.org>
Subject:   [FreeBSD-users-jp 96511] Re:  =?utf-8?b?RnJlZUJTRC0xMi4xIOOBriBsaWJHTFUuc28g44Gu5ZWP6aGM?=
Message-ID:  <4EB0BAFB-2929-44E5-BF35-A9ED563D2B5A@gmail.com>
In-Reply-To: <20191205192533.1a4562b1eb2b95b8bfe52c58@mogami.com>
References:  <20191205192533.1a4562b1eb2b95b8bfe52c58@mogami.com>

next in thread | previous in thread | raw e-mail | index | archive | help

内藤です。

> 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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4EB0BAFB-2929-44E5-BF35-A9ED563D2B5A>