1

It was a long long way, but I managed to include a shared file (libpi_pi_gcs2.so) included into C++ code under Linux Mint 17 Cinnamon 64-bit. Now as the dust is saddled I have a question left... let me summarize:

I copied libpi_pi_gcs2.so in usr/local/lib.

Trying to compile main.cpp with

g++ -Wall -o test main.cpp -lpi_pi_gcs2

faild, returning

/usr/bin/ld: skipping incompatible //usr/local/lib/libpi_pi_gcs2.so when searching for -lpi_pi_gcs2
/usr/bin/ld: cannot find -lpi_pi_gcs2
collect2: error: ld returned 1 exit status

I talked with my flatmate, and he guessed maybe the shared library is only 32bit compatible. Using -m32 let me take a step forward! But yielding new errors.

I googled and it seemed like I needed C32 std libraries. And I installed:

apt-get install ia32-libs 

Again the old error messages disappeared and new one arose, after googling around I installed:

apt-get install g++-multilib  

Trying to compile it now using

g++ -Wall -o test -m32 main.cpp -lpi_pi_gcs2 

Let to the error messages:

//usr/local/lib/libpi_pi_gcs2.so: undefined reference to `dlsym'
//usr/local/lib/libpi_pi_gcs2.so: undefined reference to `dlopen'
//usr/local/lib/libpi_pi_gcs2.so: undefined reference to `dlclose'

The solution was the following command:

g++ -Wall -o test -m32 main.cpp -lpi_pi_gcs2 -ldl

Now my question:

Is it necessary to explicitly state -ldl i.e. link with libdl.so because the -m32 flag declares everything what follows to be 32bit and hence the linker would without explicitly writing -ldl search for a 32bit libdl.so? I guess mine is 64 bit I am working on a 64bit system.

What do you think? More details and background informations are appreciated.

Greetings,

newandlost

newandlost
  • 935
  • 2
  • 10
  • 21
  • I guess `nm /usr/local/lib/libpi_pi_gcs2.so | grep dlsym` shows `U dlsym`? – nmaier Jul 02 '14 at 20:44
  • you always need to specify -ldl explicitly. It has nothing to do with -m32 switch. In this case, because of -m32 switch linker will link against 32 bit compatible libdl and libpi_pi_gcs2. – Icarus3 Jul 10 '14 at 14:28

0 Answers0