Mudah-mudahan ini akan membantu mereka, seperti saya, yang baru mengenal Linux dan tidak menemukan apa pun yang berhubungan dengan Linux menjadi sangat jelas.
Seperti dicatat oleh talonmies, saya tidak dapat menautkan secara tidak langsung dan karena itu perlu menentukan perpustakaan tambahan yang diperlukan oleh perpustakaan yang saya gunakan. Artinya, jika saya menautkan pustaka A, yang memerlukan pustaka B dan C, saya perlu menautkan ketiga pustaka agar program dapat menautkan dengan benar.
Untuk menemukan perpustakaan lain yang dibutuhkan, saya menggunakan pkg-config
perintah, yang saya temukan panduannya di sini. Menjalankan pkg-config --print-requires --print-requires-private glfw3
memberikan keluaran berikut, yaitu daftar paket yang diperlukan oleh glfw3.
x11
xrandr
xi
xxf86vm
gl
Saya kemudian dapat menemukan perpustakaan apa yang perlu saya sertakan dengan menjalankan pkg-config --libs
, diikuti dengan nama perpustakaan. Misalnya, pkg-config --libs x11
menghasilkan -lX11
.
Catatan:Anda dapat meneruskan beberapa item ke pkg-config
sebagai input, jadi jalankan
pkg-config --libs $(pkg-config --print-requires --print-requires-private glfw3)
akan mencetak semua pustaka tambahan yang perlu Anda tautkan (-lX11 -lXrandr -lXi -lXxf86vm -lGL
).
Program saya sekarang berhasil ditautkan, semoga bermanfaat bagi siapa pun yang mengalami masalah serupa.
Penaut Anda memerlukan perpustakaan X11, Anda perlu menentukan -lX11 untuk penaut
Coba
/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
Coba tambahkan -pthread di akhir daftar pustaka (baris perintah) di Makefile.
Itu berhasil untuk saya.