5

PCにFedora 19 x86_64を新たにインストールしました。簡単な OpenGL プログラムを作成しましたが、コンパイルに失敗しました。

    gcc -o quad quad.c -lX11 -lGL -lGLU
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.1/../..        /../libGL.so when searching for -lGL
    /usr/bin/ld: skipping incompatible /lib/libGL.so when searching for -lGL
    /usr/bin/ld: skipping incompatible /usr/lib/libGL.so when searching for -lGL
    /usr/bin/ld: cannot find -lGL
    collect2: error: ld returned 1 exit status

MesaGL と他のライブラリ (つまり /usr/lib) を配置していますが、何が問題なのですか?

4

4 に答える 4

6

私にとっては、ライブラリのシンボリックリンクに何か問題がありました:

$ locate libGL.so | egrep ^/usr | xargs file
/usr/lib/libGL.so:                     symbolic link to `/usr/lib/libGL.so.1'
/usr/lib/libGL.so.1:                   symbolic link to `/usr/lib/libGL.so.1.2'
/usr/lib/libGL.so.1.2:                 symbolic link to `/usr/lib/fglrx/fglrx-libGL.so.1.2'
/usr/lib/fglrx/fglrx-libGL.so.1.2:     ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
/usr/lib64/FGL.renamed.libGL.so.1.2.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=46121ec8b16424a8b65a0cf11c3f9730ae0e49f5, stripped
/usr/lib64/libGL.so:                   broken symbolic link to `libGL.so.1.2.0'
/usr/lib64/libGL.so.1:                 symbolic link to `/usr/lib64/libGL.so.1.2'
/usr/lib64/libGL.so.1.2:               symbolic link to `/usr/lib64/fglrx/fglrx-libGL.so.1.2'
/usr/lib64/fglrx/fglrx-libGL.so.1.2:   ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped

そのため、/usr/lib/libGL.so は 32 ビット ライブラリを指し、/usr/lib/libGL.so は壊れたリンクでした。libGL.so.1 を正しく指すように /usr/lib64 バージョンを修正しました (また、/usr/lib バージョンは適切な測定のために 64 ビット バージョンを指すように修正しました)。これにより、コードがコンパイルされたようです。

于 2014-08-07T01:05:37.133 に答える
1

libGL の互換性のないバージョンと、互換性のない GCC ライブラリに関する警告があります。64 ビット OS に 32 ビット バージョンの gcc がインストールされている可能性があります。試す

file -L `which gcc`

これを確認します。

于 2013-07-09T15:31:05.893 に答える