2

私のプロジェクトディレクトリには、次のものがあります。

  • ソースから glew をコンパイルした (make を実行した) ./external/glew
  • ./external/glfw には、glfw もソースからコンパイルされています (make x11 を実行)

私の.cソースコードで:

#include <stdio.h>
#include <stdlib.h>

#include "external/glew/include/GL/glew.h"
#include "external/glfw/include/GL/glfw.h"

私はGCCを使用してコンパイルしようとしました:

gcc test1.c -o test1 -DGLEW_STATIC -L./external/glew/lib -lGLEW -lGLU -lGL \
-L./external/glfw/lib/x11 -lglfw

./external/glew/lib は libGLEW.a の場所で、./external/glfw/lib/x11 は libglfw.a の場所です。

エラーなしでコンパイルされます。しかし、次に ./test1 を実行しようとすると、次のようになります。

./test1: error while loading shared libraries: libGLEW.so.1.6: cannot
open shared object file: No such file or directory

glew と glfw を静的にコンパイルするにはどうすればよいですか?

EDIT 1助けてくれてありがとう。stackoverflow と古い nabble の人々の助けを借りて、静的にリンクされた GLFW と GLEW に何をする必要があるかを書き留めて、http: //www.phacks.net/static-compile-glfw-and-glew に置くことができました。 /

4

1 に答える 1

2

スタティック ライブラリは -l… ではリンクされませんが、リンカー ソース ファイルに追加されるだけです。ただし、本当にそれらを静的にリンクしたいのか再確認してください。ここでの問題は、*nix システムのダイナミック リンカがデフォルトでシステム ライブラリ ディレクトリと LD_LIBARY_PATH 環境変数で指定されたパスのみを検索することです。

ただし、ライブラリが配置されている実行可能ファイルに相対リンカー パスを追加することもできます (--rpathリンカー オプション)。そうすれば、システム ライブラリとは独立して、実行可能ファイルに関連するディレクトリにライブラリを出荷できます。これを行う場合は、binrelocも調べる必要があります

于 2011-08-20T15:14:55.680 に答える