2016-08-09 9 views
0

私はautomakeツールを使って簡単なC++プログラムをコンパイルしようとしています。しかし、私は単純に代わり終わりのグラム++コマンドの先頭に-o example example.cpp一部を置くことによって解決することができるいくつかのリンカエラーは、取得するには、CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o [email protected]automakeのCXXLINKで注文を変更するにはどうすればよいですか?

この方法:単独では、AutomakeはそのMakefileの行で作成されます。

-o example example.cppをリンカコマンドの前に置くようにautomakeに指示するにはどうすればよいですか?私はこのようにそれを手動でコンパイルするとき

g++ -I/usr/include/libdrm -std=c++11 -pthread -g -O2 -lGLEW -lGLU -lGL -lglfw -lGL -lGLEW -lglfw -lX11 -lXi -lXrandr -o GLTest main.o 
main.o: In function `main': 
main.cpp:8: undefined reference to `glfwInit' 
main.cpp:9: undefined reference to `glfwWindowHint' 
main.cpp:10: undefined reference to `glfwWindowHint' 
main.cpp:11: undefined reference to `glfwWindowHint' 
main.cpp:12: undefined reference to `glfwWindowHint' 
main.cpp:14: undefined reference to `glfwCreateWindow' 
collect2: error: ld returned 1 exit status 

は、これらが解決されています:

g++ -o GLTest main.cpp -I/usr/include/libdrm -std=c++11 -pthread -g -O2 -lGLEW -lGLU -lGL -lglfw -lGL -lGLEW -lglfw -lX11 -lXi -lXrandr 
+1

あなたの 'Makefile.am'はどのように見えますか? – Galik

+0

これは私のMakefile.amである: 'bin_PROGRAMS = GLTest' ' GLTest_SOURCES = main.cpp' 'AM_CXXFLAGS = @ gllibs_CFLAGS @ -std = C++ 11 -pthread' ' AM_LDFLAGS = @ gllibs_LIBS @ -lGL -lGLEW -lglfw -lX11 -lXi -lXrandr' – Kadabash

+0

'@ gllibs_LIBS @ 'はどのように設定されていますか?代わりに '$(gllibs_LIBS)'を試しましたか? GL/X11などのライブラリを見つけるために 'PKG_CHECK_MODULES'を見ましたか? – Galik

答えて

0

リンカコマンドから、ここで

はここMakefile.am

bin_PROGRAMS = GLTest 

GLTest_SOURCES = main.cpp 

[email protected][email protected] -std=c++11 -pthread 
[email protected][email protected] -lGL -lGLEW -lglfw -lX11 -lXi -lXrandr 

は、リンカエラーですです出力ではlibtoolを使用していないようです。

configure.acAM_PROG_LIBTOOLを追加してみてください。

2

あなたは間違っています。問題はライブラリをLDFLAGSとして渡していることであり、それは間違っています。

あなたはそれらのライブラリであることを正しくautomakeのを言っているように、あなたは

GLTest_LDADD = $(gllibs_LIBS) 

を持つ必要があります。

libtoolを使用する使用するlibtoolのバージョンによって、コマンドラインを並べ替えることができますが、他の状況ではやはり間違ったやり方で失敗します。

関連する問題