10. september 2003 - 09:05Der er
7 kommentarer og 1 løsning
C++ kompilering på redhat - hvordan inkluderes undermapper
Jeg prøver at kompilere et simpelt program på en redhat. Det består at følgende 3 filer: /home/me/test.cpp /home/me/modul/ting.cpp /home/me/modul/ting.hpp
Jeg har prøvet at kompilere på disse måder: c++ *.cpp -L /usr/lib/librrd.a -lrrd -o mitprogram c++ *.cpp -I modul -L /usr/lib/librrd.a -lrrd -o mitprogram c++ *.cpp -I /home/me/modul -L /usr/lib/librrd.a -lrrd -o mitprogram
INGEN af ovenstående virker... Fejlene fra kompileren: "undefined reference to ...."
Hvad er det lige der går galt ??
PS: Det skal lige siges - at hvis jeg kopierer de to filer fra modul mappen til samme sted som test.cpp så virker det!! Og ja - jeg har skrevet '#include "modul/ting.hpp"' i test.cpp
arne_v har ret. Først oversætter du dine .cpp filer til .o filer, bagefter linker du. Og når du linker, så vil -L option fortælle *hvor* dit library ligger, -l hvilket du vil linke med. Så i stedet for Arnes sidste linie c++ test.o modul/ting.o /usr/lib/librrd.a -o mitprogram, så kan du altså også bruge c++ test.o modul/ting.o -L/usr/lib -lrrd -o mitprogram
Og ja, gængs praksis er at have en makefile i hver dir. Hvis du vil kigge på dynamisk makefile, så kig på GNU automake og autoconf.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.