C++: kompileringsproblem - "no .eh_frame_hdr table will be created"

Permalänk
Hedersmedlem

C++: kompileringsproblem - "no .eh_frame_hdr table will be created"

Har fått kod till ett dataanalysprogram skrivet i C++ ursprungligen för X antal år sedan, och koden har sedan dess uppdaterats och pillats med friskt utav generationer av mindre vana programmerare, skulle jag tro. Jag fick koden senast från en person som modifierat den för att få den att kompilera på personens Mac, så jag har åter fått modifiera makefiler och annat längs vägen. Med Google och tålamod så har jag kommit framåt, tills nu.

Jag får inte en del av programmet kallat "Transfer" att kompilera. Andra delar har jag fått modifiera smått då vissa kodstycken inte var kompatibla med GCC 4, vad jag kan förstå, men jag vet inte vad som saknas nu.

make output for Transfer - 76eda0 — full output från make (direkt efter make clean)
make output for Transfer - partial - 9eeee9 — output enbart från den felande delen
GNUmakefile for Transfer - ddbdef — Makefile för Transfer

Det relevanta felmeddelandet verkar vara

/usr/bin/ld: error in /home/[…]/lib/libCommandLineInterface.so(.eh_frame); no .eh_frame_hdr table will be created.

libCommandLineInterface.so har jag kompilerat tidigare, och det verkar fungera som det ska (åtminstone inga felmeddelanden):

$ make g++ -g2 -O2 -I./ -c CommandLineInterface.cc -o CommandLineInterface.o g++ -g -Wl -o /home/[…]/lib/libCommandLineInterface.so CommandLineInterface.o -lm -L/home/[…]/lib -lgcc -lc Done

Märk väl att jag som sagt har behövt modifiera makefiler. En del av de jag fick var också uppenbart felaktiga till att börja med, så att det är något fel i dem är inte alls omöjligt.

Min g++-version är "g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3", amd64. Jag har googlat på "eh_frame_hdr"-spåret i dagar utan att komma vidare. Något guldtips?

EDIT: Behövde lägga till -fPIC och -shared när jag kompilerade libCommandLineInterface.so för att bli av med eh_frame_hdr-problemet. Nu har jag kommit ett steg längre, och kan börja fokusera på "undefined references" för libTransfer.so.

EDIT2: Fick tag i en person som var bekant med kodbasen sedan tidigare. Tydligen så fungerade det om man kompilerade, ignorerade felmeddelandena angående "undefined references", manuellt tog bort libTransfer.so och körde make igen… Fortfarande oklart exakt varför. Ett kul fel att spendera en vecka eller två på

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.