public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
From: Dingjun Chen <Dingjun.Chen@geotechairborne.com>
To: "gcc-help@gcc.gnu.org" <gcc-help@gcc.gnu.org>
Subject: How does g++ link an objective file .o built by gcc?
Date: Thu, 4 Jan 2024 18:47:36 +0000	[thread overview]
Message-ID: <YT2P288MB0073D6BA65387A01FE963AB297672@YT2P288MB0073.CANP288.PROD.OUTLOOK.COM> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 1740 bytes --]

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@geotechairborne.com<mailto:Dingjun.Chen@geotechairborne.com> | 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.

[-- Attachment #2: output.txt --]
[-- Type: text/plain, Size: 5967 bytes --]

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

             reply	other threads:[~2024-01-04 18:47 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-04 18:47 Dingjun Chen [this message]
2024-01-04 18:53 ` Jonathan Wakely
2024-01-04 19:30   ` Dingjun Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YT2P288MB0073D6BA65387A01FE963AB297672@YT2P288MB0073.CANP288.PROD.OUTLOOK.COM \
    --to=dingjun.chen@geotechairborne.com \
    --cc=gcc-help@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).