I just moved from RH (CentOS 6) with gcc 4.4.6 to Ubuntu 12 with gcc 4.6.3. I have a program that references a third party library. I have successfully build and installed the library on the Ubuntu machine. When I run updatedb
and locate libXXX.so
I get the same exact results. I look for the header file the same way and also get the same exact results.
I have a small test program that came from the CentOS box. It consists of one *.c
file and a bash script to build and run it. It's all very simple. The script looks like this:
#!/bin/bash
rm -f a.out
gcc -W -lpowerdna *.c
exit 0
I have LD_LIBRARY_PATH
set (on both the CentOS and Ubuntu boxes) to the directory where the header file and *.so
reside. I have double, triple, and quadruple checked that the spelling and the capitalization are correct.
And yet when I compile on the Ubuntu machine, I get the undefined reference to '<function name>'
error for every function call in the test program. To add to the general oddness, their defined types are not generating errors. When I comment out the #include
in my test file, the compiler generates errors for the types.
This is a very simple setup, with very few points of possible failure. I'm certain I'm doing something stupid, but for the life of me, I don't see it. For completeness, I'll post the pertinent parts.
Source file:
#include<stdio.h>
#include<signal.h>
#include "PDNA.h"
// bare bones test program
Locate results:
[brian@localhost dmap403]$ locate PDNA.h
/usr2/uei/DAQLib/PDNA.h
[brian@localhost dmap403]$ locate libpowerdna
/usr2/uei/DAQLib/libpowerdna.so
/usr2/uei/DAQLib/libpowerdna.so.4
/usr2/uei/DAQLib/libpowerdna.so.4.4.0
Environment variable:
[brian@localhost dmap403]$ env | grep LD_
LD_LIBRARY_PATH=:/usr2/uei/DAQLib
When I compile on Ubuntu, I get these results:
/tmp/ccJAa183.o: In function 'main':
dmap403.c:(.text+0x6c): undefined reference to 'function name'
collect2: ld returned 1 exit status
It looks like the compiler doesn't know where the *.so
is, but I have it in the LD_LIBRARY_PATH
. Heck, I even added -L/usr2/uei/DAQLib -lpowerdna
to the gcc options to no avail.
EDIT: Perhaps this should be moved to the Linux site?
EDIT: Updated title to better reflect the question.