Kompilácia končí s chybou
/usr/bin/ld: bin_linux/src/3D/OpenGLCanvas.o: undefined reference to symbol 'glLightfv' //usr/lib/libGL.so.1: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status make: *** [genericcam] Error 1
Generic CAM nájdete tu

To sa stáva pri projekte čo je prístupný len cez git že bude chcieť najnovšie knižnice. Skús tú chybu reprodukovať na gentoo ktoré by malo mať novší opengl stack ako debian.
Na hlavnom desktope mám stále Debian, Gentoo používam tiež a je pravda, že tam ide skoro všetko, len tie hodiny kompilácií mi vadia. Teraz skúšam Sabayon, je tam veľa balíčkov skompilovaných a pri tom dá používať aj ako Gentoo. Proste som za roky s Debianom spohodlnel, apt-get install a mám to hotové.
Ten program ešte nemá balíček, takže argument s dlhou kompiláciou neobstojí. Mimochodom, v dnešnej dobe a s výkonom desktopov ktoré nemajú 10 rokov to už dávno niesú hodiny kompilácie. Holt, debian je stable za cenu starých knižníc.
Skôr som myslel že na čo šiahnem v Gentoo to sa musí kompilovať, ale je to sympatické distro. Ako som písal odkedy mám CNC frézku som na tom s časom úplne zle a ako dobrú alternatívu vidím v Sabayon, alebo sa ti na ňom niečo nepáči? Mne binárne balíčky dosť šetria čas, hlavne keď stále niečo skúšam.
A kompilovať sa to dokáže aj popri inej činnosti, štandardne má emerge zníženú prioritu aby nebrzdil. Ak by binárne balíčky šetrili čas, tak by táto téma nevznikla. Predsa len sa pýtaš na skompilovanie zo zdrojáku a nie na inštaláciu hotového balíčka.
Projekt potrebuje OpenGL kniznicu ale nelinkuje ju, doteraz fungoval preto lebo je snou zlinkovana libGLU, to uz ale od istej verzie gcc nefunguje.
index fdb35c7..28ed185 100644 --- a/Makefile +++ b/Makefile @@ -117,7 +117,7 @@ DEPS := $(patsubst %.cpp, ${OBJDIR}/%.d, ${SOURCES}) INCFLAGS := -I./src CXXFLAGS := `wx-config --cxxflags` -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/lua5.1 -O0 -g3 -Wall LDFLAGS := `wx-config --libs gl,core,base,xml` -L/usr/local/lib -L/usr/lib -LDLIBS := -llua5.1 -lGLU +LDLIBS := -llua5.1 -lGL -lGLU #REZFLAGS := `wx-config --rez-flags` ifdef FINAlibglu mám nainštalovanú, možno je zastaralá.
A ten Makefile si neskusal opravit?
Oprava ma posunula o krok ďalej, takže mám nový problém
wxWidgets je nainstalovane? "wx-config --libs gl,core,base,xml" funguje?
Jj to som mal, ale začalo to fungovať až po nainštalovaní balíčku libalien-wxwidgets-perl.
Tak som sa dostal k ďalšej chybe
Kurňa čo je llua?Lua je programovací jazyk.
Priateľu to viem, ale kurňa prečo llua, zdôrazňujem to ll.
Pretoze konvencia, -l* expanduje na lib*.
1. Nainstalovat LUA.
2. Upravit Makefile
@@ -117,7 +117,7 @@ DEPS := $(patsubst %.cpp, ${OBJDIR}/%.d, ${SOURCES}) INCFLAGS := -I./src CXXFLAGS := `wx-config --cxxflags` -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/lua5.1 -O0 -g3 -Wall LDFLAGS := `wx-config --libs gl,core,base,xml` -L/usr/local/lib -L/usr/lib -LDLIBS := -llua5.1 -lGLU +LDLIBS := -llua -lGL -lGLU #REZFLAGS := `wx-config --rez-flags`pretoze:
a) pravdepodone nebude sediet verzia.
b) -llua5.1 bude hladat kniznicu liblua5.1.[so, a], ale konvencia je lib[meno].so.[verzia] napr. liblua.so.5.1.5
Dík, keď budem doma, tak to vyskúšam.
Zaujímavé dnes zas tá chyba čo predtým, make som sa pokúšal upraviť. Náhrada za llua bez verzie vyhodí chybu. Takže som číslo verzie llua vrátil napäť a som zas pri chybe o krok naspäť, už som skúšal viacero vecí, ale asi to bude vo verzií vxwidgets.
Ze by si medzi casom upgradol wxWidgets? Skus zmazat adresar /home/mario/Programy/genericcam-git/bin_linux, ten Makefile totiz nevidi zavislosti na systemovych headroch.
Ohladne LUA tazko radit ked nepises aku chybu to vracia.
Zmazal som ten priečinok a chyba sa zmenila na
Po tomto úkone llua s verziou, alebo bez nej hádže rovnakú chybu.Do suboru src/3D/AffineTransformMatrix.cpp treba na riadok 270 za wxASSERT(T11!=0) pridat ";".
index 54dd799..83a1786 100644 --- a/src/3D/AffineTransformMatrix.cpp +++ b/src/3D/AffineTransformMatrix.cpp @@ -267,7 +267,7 @@ const AffineTransformMatrix AffineTransformMatrix::Inverse() const + a[2] * a[4]) * a[9] + (a[1] * a[6] + (-a[2] * a[5])) * a[8]; // T11 is the determinant of the matrix. This can not // not be zero for a correct transformation matrix. - wxASSERT(T11!=0) + wxASSERT(T11!=0); double T12 = a[4] * a[9]; double T13 = a[5] * a[8];Zabralo a sme na ďalšej chybe :)
Idem chrápať, tak až máš chuť zajtra pokračujeme.commit 5142bd529d2917af34fac37b7ea0ec5bf957e0f6 Author: Tobias Schäfer <tobiassch Date: Thu Jul 11 23:56:01 2013 +0200 Setting up OctreeInt64Nie som lingvista ale vyzera to ako prítomny priebehovy cas, teda problem bude asi v tom ze ten dej este stale prebieha. Ako heslo do dalsieho levelu by som pouzil nieco ako:
Moc ti ďakujem, skompilované. Dík za trpezlivosť.
Neni zac.
Ešte prikladám výpis s wx-config