Doufejme, že to pomůže těm, jako jsem já, kteří jsou s Linuxem noví a nic, co souvisí s Linuxem, nepovažují za zvlášť zřejmé.
Jak poznamenali talonmies, nejsem schopen odkazovat nepřímo a jako takový potřebuji specifikovat jakékoli další knihovny požadované knihovnami, které používám. To znamená, že pokud propojím knihovnu A, která vyžaduje knihovny B a C, musím propojit všechny tři knihovny, aby se program propojil správně.
K nalezení dalších potřebných knihoven jsem použil pkg-config
příkaz, pro který jsem zde našel návod. Spouští se pkg-config --print-requires --print-requires-private glfw3
poskytl následující výstup, což je seznam balíčků požadovaných glfw3.
x11
xrandr
xi
xxf86vm
gl
Poté jsem byl schopen najít knihovny, které jsem potřeboval zahrnout, spuštěním pkg-config --libs
, za kterým následuje název knihovny. Například pkg-config --libs x11
přinesl -lX11
.
Poznámka:pkg-config
můžete předat více položek jako vstup, takže běží
pkg-config --libs $(pkg-config --print-requires --print-requires-private glfw3)
vytiskne všechny další knihovny, které potřebujete propojit (-lX11 -lXrandr -lXi -lXxf86vm -lGL
).
Můj program se nyní úspěšně spojuje, doufám, že to pomůže každému, kdo má podobný problém.
Váš linker potřebuje knihovnu X11, musíte zadat -lX11 to linker
Zkuste
/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
Zkuste přidat -pthread na konec seznamu knihoven (příkazový řádek) v Makefile.
Pro mě to fungovalo.