Find the answer to your Linux question:
Results 1 to 7 of 7
I've googled away to figure this out, and tried out different command line combinations but the error persists. This is what happens... btw I'm new to Linux but not to ...
  1. #1
    Just Joined!
    Join Date
    Jan 2010
    Posts
    4

    Undefined Reference to <function>

    I've googled away to figure this out, and tried out different command line combinations but the error persists. This is what happens... btw I'm new to Linux but not to C++.

    Code:
    chezkaranubuntu:~/Desktop/Project$ gcc -Wall modbustest.cxx -o modbustest
    /tmp/ccoGrNDI.o: In function `main':
    modbustest.cxx(.text+0x28): undefined reference to `initscr'
    modbustest.cxx(.text+0xd0): undefined reference to `std::cout'
    modbustest.cxx(.text+0xd5): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0xe4): undefined reference to `std::cout'
    modbustest.cxx(.text+0xe9): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x118): undefined reference to `Mb_open_device(char*, int, int, int, int)'
    modbustest.cxx(.text+0x12e): undefined reference to `std::cout'
    modbustest.cxx(.text+0x133): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x146): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x156): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x19f): undefined reference to `std::cout'
    modbustest.cxx(.text+0x1a4): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x20a): undefined reference to `Mb_master(Mbm_trame, int*, int*, void*, void*)'
    modbustest.cxx(.text+0x22a): undefined reference to `std::cout'
    modbustest.cxx(.text+0x22f): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x24d): undefined reference to `std::cout'
    modbustest.cxx(.text+0x252): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x270): undefined reference to `std::cout'
    modbustest.cxx(.text+0x275): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x290): undefined reference to `std::cout'
    modbustest.cxx(.text+0x295): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x2b0): undefined reference to `std::cout'
    modbustest.cxx(.text+0x2b5): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x2c6): undefined reference to `std::cout'
    modbustest.cxx(.text+0x2cb): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x2de): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(int)'
    modbustest.cxx(.text+0x2ee): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x2fd): undefined reference to `std::cout'
    modbustest.cxx(.text+0x302): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x314): undefined reference to `std::cin'
    modbustest.cxx(.text+0x319): undefined reference to `std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char> >(std::basic_istream<char, std::char_traits<char> >&, char&)'
    modbustest.cxx(.text+0x354): undefined reference to `std::cout'
    modbustest.cxx(.text+0x359): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x35e): undefined reference to `Mb_close_device()'
    modbustest.cxx(.text+0x36d): undefined reference to `std::cout'
    modbustest.cxx:(.text+0x372): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
    modbustest.cxx(.text+0x377): undefined reference to `endwin'
    modbustest.cxx(.text+0x37c): undefined reference to `stdscr'
    modbustest.cxx(.text+0x384): undefined reference to `wgetch'
    /tmp/ccoGrNDI.o: In function `__static_initialization_and_destruction_0(int, int)':
    modbustest.cxx(.text+0x3c1): undefined reference to `std::ios_base::Init::Init()'
    modbustest.cxx(.text+0x3c6): undefined reference to `std::ios_base::Init::~Init()'
    /tmp/ccoGrNDI.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
    collect2: ld returned 1 exit status
    The header files included are...

    Code:
    #include<iostream>
    #include<modbus.h>
    #include<ncurses.h>
    Any ideas would be appreciated

  2. #2
    Linux Enthusiast gerard4143's Avatar
    Join Date
    Dec 2007
    Location
    Canada, Prince Edward Island
    Posts
    714
    try using -lncurses in your compile line


    gcc -Wall modbustest.cxx -o modbustest -lncurses

    Also your using gcc and std::cout is g++

    So maybe try:

    g++ -Wall modbustest.cxx -o modbustest -lncurses
    Make mine Arch Linux

  3. #3
    Linux Guru techieMoe's Avatar
    Join Date
    Aug 2004
    Location
    Texas
    Posts
    9,496
    Did you also include this line after your headers?

    Code:
    using namespace std;
    Registered Linux user #270181
    TechieMoe's Tech Rants

  4. #4
    Linux Engineer hazel's Avatar
    Join Date
    May 2004
    Location
    Harrow, UK
    Posts
    955
    I think you need to invoke gcc as g++ to compile C++ programs. Otherwise you don't get the C++ library.
    "I'm just a little old lady; don't try to dazzle me with jargon!"

  5. #5
    Just Joined!
    Join Date
    Jan 2010
    Posts
    4
    Quote Originally Posted by gerard4143 View Post
    try using -lncurses in your compile line


    gcc -Wall modbustest.cxx -o modbustest -lncurses

    Also your using gcc and std::cout is g++

    So maybe try:

    g++ -Wall modbustest.cxx -o modbustest -lncurses
    Thanks, I'll try it out and report back.

    Quote Originally Posted by techieMoe
    Did you also include this line after your headers?

    Code:
    using namespace std;
    Nops, I'll add it and check.

    Quote Originally Posted by hazel
    I think you need to invoke gcc as g++ to compile C++ programs. Otherwise you don't get the C++ library.
    Oh yeah should've thought of that...

  6. #6
    Just Joined!
    Join Date
    Jan 2010
    Posts
    4
    Thanks for the suggestions, they fixed most of the errors. A few errors remain to do with the modbus.h header file. I tried adding the -lmodbus switch but that didn't help. I guess I'll have to ask the author of the header file directly.

    Thank you again

  7. #7
    Just Joined!
    Join Date
    Jan 2010
    Posts
    4
    Googled some more, and it appears that for some reason I had to include the modbus.h file like this...

    Code:
    extern "C" {
    #include "modbus.h"
    }
    No errors =D

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
...