How does g++ link an objective file .o built by gcc?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



HI, everyone,

I have a question for you.

I have multiple c++ files .cc (main program is C++) and one c file 'librtd-dm6620.c'. Of course I will use g++ to build the executable. For that 'librtd-dm6620.c' file I still want to build its .o file via gcc because there are some possibly fatal warnings if I use g++ to build this .c file. If this .c file is built with gcc, there is no any warning and it is perfect in compilation.

Finally, I want to build the executable by linking all .o files via g++.  The problem is that the .o file built by gcc is not really linked by g++.  All defined functions in 'librtd-dm6620.c' cannot be found by the g++ linker 'ld'.

I use CMake to build the executable. Could someone tell me how to link an objective file built by gcc into C++ executable? Did I miss some special compiling options for the c file 'librtd-dm6620.c'?

Please see the error information in the file attached for details.

I look forward to your help and hearing from you.

Thanks & Regards,

Dingjun
Dingjun Chen  | Software Developer

[Geotech Airborne Geophysical Surveys]

Geotech Ltd. dba Geotech Airborne | 270 INDUSTRIAL PKY S | AURORA ON CA | L4G 3T9
T: +1 905 841 5004 | Dingjun.Chen@xxxxxxxxxxxxxxxxxxx<mailto:Dingjun.Chen@xxxxxxxxxxxxxxxxxxx> | www.geotechairborne.com<www.geotech.ca>

P Please consider the environment before printing this email

This message may contain PRIVILEGED AND PROPRIETARY INFORMATION intended solely for the use of the addressee (s) named above. Any disclosure, distribution, copying, or use of the information by others is strictly prohibited. If you have received this message in error, please advise the sender by immediate reply and delete the original message.
Scanning dependencies of target vtem_xyz
[  4%] Building CXX object CMakeFiles/vtem_xyz.dir/src/adcGS.cc.o
[  8%] Building CXX object CMakeFiles/vtem_xyz.dir/src/c_8x16.cc.o
[ 12%] Building CXX object CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o
[ 16%] Building CXX object CMakeFiles/vtem_xyz.dir/src/dongle_interface.cc.o
[ 20%] Building CXX object CMakeFiles/vtem_xyz.dir/src/emstream.cc.o
[ 25%] Building CXX object CMakeFiles/vtem_xyz.dir/src/fmenu.cc.o
[ 29%] Building CXX object CMakeFiles/vtem_xyz.dir/src/frqdom.cc.o
[ 33%] Building CXX object CMakeFiles/vtem_xyz.dir/src/gmenu.cc.o
[ 37%] Building CXX object CMakeFiles/vtem_xyz.dir/src/graph.cc.o
[ 41%] Building CXX object CMakeFiles/vtem_xyz.dir/src/gsc24dsi_interface.cc.o
[ 45%] Building CXX object CMakeFiles/vtem_xyz.dir/src/keybrd.cc.o
[ 50%] Building CXX object CMakeFiles/vtem_xyz.dir/src/mouse.cc.o
[ 54%] Building CXX object CMakeFiles/vtem_xyz.dir/src/processdngl.cc.o
[ 58%] Building CXX object CMakeFiles/vtem_xyz.dir/src/processxyz.cc.o
[ 62%] Building CXX object CMakeFiles/vtem_xyz.dir/src/runproc.cc.o
[ 66%] Building CXX object CMakeFiles/vtem_xyz.dir/src/serialmsg.cc.o
[ 70%] Building CXX object CMakeFiles/vtem_xyz.dir/src/simulant.cc.o
[ 75%] Building CXX object CMakeFiles/vtem_xyz.dir/src/systemid.cc.o
[ 79%] Building CXX object CMakeFiles/vtem_xyz.dir/src/Vtem24.cc.o
[ 83%] Building CXX object CMakeFiles/vtem_xyz.dir/src/_d_aes.cc.o
[ 87%] Building CXX object CMakeFiles/vtem_xyz.dir/src/_d_hexbin.cc.o
[ 91%] Building CXX object CMakeFiles/vtem_xyz.dir/src/_d_serial.cc.o
[ 95%] Building C object CMakeFiles/vtem_xyz.dir/src/librtd-dm6620.c.o
[100%] Linking CXX executable ../bin/vtem_xyz
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x576): In function `OpenDAC()':
: undefined reference to `OpenBoard6620(DM6620_Board_Descriptor**, int)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x5b1): In function `StartDAC()':
: undefined reference to `SetDACUpdateEnable6620(DM6620_Board_Descriptor*, int, int, int, int)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x5be): In function `StartDAC()':
: undefined reference to `DoneTimer6620(DM6620_Board_Descriptor*)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x5cb): In function `StartDAC()':
: undefined reference to `InitBoard6620(DM6620_Board_Descriptor*)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x5e0): In function `StartDAC()':
: undefined reference to `SelectTimerCounter6620(DM6620_Board_Descriptor*, DM6620HR_TIMER_SEL)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x5fd): In function `StartDAC()':
: undefined reference to `ClockDivisor6620(DM6620_Board_Descriptor*, DM6620HR_CLK, unsigned short)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x61a): In function `StartDAC()':
: undefined reference to `SetDACRange6620(DM6620_Board_Descriptor*, DM6620HR_DAC, DM6620HR_DAC_RANGE)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x637): In function `StartDAC()':
: undefined reference to `SetDACRange6620(DM6620_Board_Descriptor*, DM6620HR_DAC, DM6620HR_DAC_RANGE)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x654): In function `StartDAC()':
: undefined reference to `SetDACUpdate6620(DM6620_Board_Descriptor*, DM6620HR_DAC, DM6620HR_DAC_UPDATE)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x671): In function `StartDAC()':
: undefined reference to `SetDACUpdate6620(DM6620_Board_Descriptor*, DM6620HR_DAC, DM6620HR_DAC_UPDATE)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x6b1): In function `StartDAC()':
: undefined reference to `FillDACFIFO6620(DM6620_Board_Descriptor*, DM6620HR_DAC, unsigned short, unsigned short)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x6f8): In function `StartDAC()':
: undefined reference to `FillDACFIFO6620(DM6620_Board_Descriptor*, DM6620HR_DAC, unsigned short, unsigned short)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x71c): In function `StartDAC()':
: undefined reference to `SetDACCycle6620(DM6620_Board_Descriptor*, DM6620HR_DAC, DM6620HR_DAC_CYCLE)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x739): In function `StartDAC()':
: undefined reference to `SetDACCycle6620(DM6620_Board_Descriptor*, DM6620HR_DAC, DM6620HR_DAC_CYCLE)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x766): In function `StartDAC()':
: undefined reference to `SetDACUpdateEnable6620(DM6620_Board_Descriptor*, int, int, int, int)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x78b): In function `StopDAC()':
: undefined reference to `SetDACCycle6620(DM6620_Board_Descriptor*, DM6620HR_DAC, DM6620HR_DAC_CYCLE)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x7a8): In function `StopDAC()':
: undefined reference to `SetDACCycle6620(DM6620_Board_Descriptor*, DM6620HR_DAC, DM6620HR_DAC_CYCLE)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x7d5): In function `StopDAC()':
: undefined reference to `SetDACUpdateEnable6620(DM6620_Board_Descriptor*, int, int, int, int)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x7fa): In function `StopDAC()':
: undefined reference to `FillDACFIFO6620(DM6620_Board_Descriptor*, DM6620HR_DAC, unsigned short, unsigned short)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x81f): In function `StopDAC()':
: undefined reference to `FillDACFIFO6620(DM6620_Board_Descriptor*, DM6620HR_DAC, unsigned short, unsigned short)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x834): In function `StopDAC()':
: undefined reference to `UpdateDAC6620(DM6620_Board_Descriptor*, DM6620HR_DAC)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x849): In function `StopDAC()':
: undefined reference to `UpdateDAC6620(DM6620_Board_Descriptor*, DM6620HR_DAC)'
CMakeFiles/vtem_xyz.dir/src/dac6620.cc.o(.text+0x85f): In function `CloseDAC()':
: undefined reference to `CloseBoard6620(DM6620_Board_Descriptor*)'
collect2: ld returned 1 exit status
make[2]: *** [CMakeFiles/vtem_xyz.dir/build.make:667: ../bin/vtem_xyz] Error 1
make[1]: *** [CMakeFiles/Makefile2:68: CMakeFiles/vtem_xyz.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux