これが、私のように Linux を初めて使用する人や、Linux に関連することが特に明白であるとは思わない人の助けになることを願っています。
talonmies が指摘したように、間接的にリンクすることはできないため、使用しているライブラリに必要な追加のライブラリを指定する必要があります。つまり、ライブラリ B と C を必要とするライブラリ A をリンクする場合、プログラムが正しくリンクするには、3 つのライブラリすべてをリンクする必要があります。
他に必要なライブラリを見つけるために、 pkg-config
を使用しました コマンドについては、こちらでガイドを見つけました。 pkg-config --print-requires --print-requires-private glfw3
を実行中 glfw3 に必要なパッケージのリストである次の出力が得られました。
x11
xrandr
xi
xxf86vm
gl
pkg-config --libs
を実行して、含める必要のあるライブラリを見つけることができました。 、その後にライブラリの名前が続きます。例:pkg-config --libs x11
-lX11
が得られました .
注:複数の項目を pkg-config
に渡すことができます 入力として実行中
pkg-config --libs $(pkg-config --print-requires --print-requires-private glfw3)
リンクする必要があるすべての追加ライブラリを出力します (-lX11 -lXrandr -lXi -lXxf86vm -lGL
).
私のプログラムは正常にリンクするようになりました。これが同様の問題を抱えている人に役立つことを願っています.
リンカには X11 ライブラリが必要です。リンカに -lX11 を指定する必要があります
試してみてください
/usr/local/cuda/bin/nvcc -arch=compute_30 -code=sm_30,compute_30 -o Main.o Display.o FileUtil.o Timer.o NeuralNetwork.o -L/usr/lib -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu -L/usr/local/cuda/lib64 -lGLEW -lglfw3 -lGL -lGLU -lcuda -lcudart -lX11
Makefile のライブラリ リスト (コマンド ライン) の最後に -pthread を追加してみてください。
それは私のために働いた。