LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   make file can't find a "ltdl.h" file (https://www.linuxquestions.org/questions/linux-newbie-8/make-file-can%27t-find-a-ltdl-h-file-698884/)

nedzer 01-21-2009 10:01 AM

make file can't find a "ltdl.h" file
 
Hi,
I'm installing mysql-connector from source.
I've been able to run the ./configure

I ran it with the following options

./configure --prefix=/usr/local/home/eberwick/BO_3_1/bobje/enterprise120/linux_x86/odbc --with-iodbc=/usr/local --with-mysql-path=/home/eberwick/BO_3_1/bobje/mysql

the option in bold is the main one I needed to progress, however I only added the other options since the mySQL documentation referred to them and I thought they might have been the reason the make instruction didn't go ahead correctly.




in italics below I tried to add that option siince that is where I have a copy of the file it's after.
It's in 2 places in my system
/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl/ltdl.h
/usr/share/libtool/libltdl/ltdl.h

Any idea how I can point the make to where the "ltdl.h" file is to get this make proceed?

cheers, Ed




[root@moran mysql-connector-odbc-3.51.27r695]# make --include-dir=/usr/share/libtool/libltdl
Making all in util
make[1]: Entering directory `/tmp/mysql-connector-odbc-3.51.27r695/util'
if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../driver -I/usr/include -O3 -DDBUG_OFF -I/home/eberwick/BO_3_1/bobje/mysql/include -mcpu=pentiumpro -g -O2 -MT MYODBCUtilAllocDataSource.lo -MD -MP -MF ".deps/MYODBCUtilAllocDataSource.Tpo" -c -o MYODBCUtilAllocDataSource.lo MYODBCUtilAllocDataSource.c; \
then mv -f ".deps/MYODBCUtilAllocDataSource.Tpo" ".deps/MYODBCUtilAllocDataSource.Plo"; else rm -f ".deps/MYODBCUtilAllocDataSource.Tpo"; exit 1; fi
gcc -DHAVE_CONFIG_H -I. -I. -I../driver -I/usr/include -O3 -DDBUG_OFF -I/home/eberwick/BO_3_1/bobje/mysql/include -mcpu=pentiumpro -g -O2 -MT MYODBCUtilAllocDataSource.lo -MD -MP -MF .deps/MYODBCUtilAllocDataSource.Tpo -c MYODBCUtilAllocDataSource.c -fPIC -DPIC -o .libs/MYODBCUtilAllocDataSource.o
`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.
In file included from MYODBCUtil.h:38,
from MYODBCUtilAllocDataSource.c:21:
../MYODBC_ODBC.h:8:19: error: ltdl.h: No such file or directory
make[1]: *** [MYODBCUtilAllocDataSource.lo] Error 1
make[1]: Leaving directory `/tmp/mysql-connector-odbc-3.51.27r695/util'
make: *** [all-recursive] Error 1
[root@moran mysql-connector-odbc-3.51.27r695]#
[root@moran mysql-connector-odbc-3.51.27r695]# locate ltdl.h
/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl/ltdl.h
/home/eberwick/Desktop/bobje/unixODBC-2.2.14/libltdl/ltdl.h
/usr/share/libtool/libltdl/ltdl.h
[root@moran mysql-connector-odbc-3.51.27r695]#

Agrouf 01-21-2009 10:06 AM

Add that:
--with-ltdl-path=/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl

jdkaye 01-21-2009 01:18 PM

Hi Nedzer,
ltdl.h is found in the libltdl3-dev package (on Debian based distros) so you can install that our its equivalent on your system.
It usually lives in /usr/include/ so you manually copy the file there if you prefer.
Cheers,
jdk

nedzer 01-22-2009 03:39 AM

Hi Agrouf

that option
--with-ltdl-path=/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl

I first tried to put on the
# make command
Failed (see below)

Then I added it to the ./configure command.
[root@moran mysql-connector-odbc-3.51.27r695]# ./configure --prefix=/usr/local/home/eberwick/BO_3_1/bobje/enterprise120/linux_x86/odbc --with-iodbc=/usr/local --with-mysql-path=/home/eberwick/BO_3_1/bobje/mysql --with-ltdl-path=/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl

and ran it, it worked fine, but when I again tried the 'make' it fell over as below.

Could it be the 'This program built for i686-redhat-linux-gnu', I'm running Red Hat Ent 5 on a 32 bit machine however the data source I wish to connect to is a 64 bit machine.

cheers



"[root@moran mysql-connector-odbc-3.51.27r695]# make --with-ltdl-path=/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl
make: unrecognized option `--with-ltdl-path=/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl'
Usage: make [options] [target] ...
Options:
-b, -m Ignored for compatibility.
-B, --always-make Unconditionally make all targets.
-C DIRECTORY, --directory=DIRECTORY
Change to DIRECTORY before doing anything.
-d Print lots of debugging information.
--debug[=FLAGS] Print various types of debugging information.
-e, --environment-overrides
Environment variables override makefiles.
-f FILE, --file=FILE, --makefile=FILE
Read FILE as a makefile.
-h, --help Print this message and exit.
-i, --ignore-errors Ignore errors from commands.
-I DIRECTORY, --include-dir=DIRECTORY
Search DIRECTORY for included makefiles.
-j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg.
-k, --keep-going Keep going when some targets can't be made.
-l [N], --load-average[=N], --max-load[=N]
Don't start multiple jobs unless load is below N.
-L, --check-symlink-times Use the latest mtime between symlinks and target.
-n, --just-print, --dry-run, --recon
Don't actually run any commands; just print them.
-o FILE, --old-file=FILE, --assume-old=FILE
Consider FILE to be very old and don't remake it.
-p, --print-data-base Print make's internal database.
-q, --question Run no commands; exit status says if up to date.
-r, --no-builtin-rules Disable the built-in implicit rules.
-R, --no-builtin-variables Disable the built-in variable settings.
-s, --silent, --quiet Don't echo commands.
-S, --no-keep-going, --stop
Turns off -k.
-t, --touch Touch targets instead of remaking them.
-v, --version Print the version number of make and exit.
-w, --print-directory Print the current directory.
--no-print-directory Turn off -w, even if it was turned on implicitly.
-W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
Consider FILE to be infinitely new.
--warn-undefined-variables Warn when an undefined variable is referenced.

This program built for i686-redhat-linux-gnu
Report bugs to <bug-make@gnu.org>
[root@moran mysql-connector-odbc-3.51.27r695]#

Agrouf 01-22-2009 03:49 AM

Add that to configure, not make.
Then make just as normal:
make

nedzer 01-22-2009 05:34 AM

Hi jdkaye,

that seems like the way to go

I'm running Red Hat Ent 5.0.

I have that file at
/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl/ltdl.h
/usr/share/libtool/libltdl/ltdl.h

I'll copy to '/usr/include/' and see how that goes.

Hey, that worked much better though still fell over toward the end, the error message now being;

I looked for that atomic.h and it's everywhere. Loads of those asm folders too.

Totally clueless on how to proceed next. Thanks in advance jdkaye for your help with this.



gcc -DHAVE_CONFIG_H -I. -I. -I. -DNONTHREADSAFE -I/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl/include -I/usr/include -O3 -DDBUG_OFF -I/home/eberwick/BO_3_1/bobje/mysql/include -mcpu=pentiumpro -g -O2 -MT libmyodbc3_la-catalog.lo -MD -MP -MF .deps/libmyodbc3_la-catalog.Tpo -c catalog.c -fPIC -DPIC -o .libs/libmyodbc3_la-catalog.o
`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.
In file included from ../MYODBC_MYSQL.h:12,
from myodbc3.h:37,
from catalog.c:44:
/home/eberwick/BO_3_1/bobje/mysql/include/my_global.h:361:24: error: asm/atomic.h: No such file or directory
make[2]: *** [libmyodbc3_la-catalog.lo] Error 1
make[2]: Leaving directory `/tmp/mysql-connector-odbc-3.51.27r695/driver'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/tmp/mysql-connector-odbc-3.51.27r695/driver'
make: *** [all-recursive] Error 1









Aside :
My colleague suggested doing a

# yum install libltdl3-dev

but no luck

I looked up ltdl.h but can't find a download that'll work or not come back with the message like 'a package with '

Agrouf 01-22-2009 06:53 AM

Edit config.h and delete this line:
#define HAVE_ATOMIC_ADD

Warning: DO NOT rerun configure after that as it will overwrite config.h ; Just run make

jdkaye 01-22-2009 11:32 PM

Quote:

Originally Posted by nedzer (Post 3417201)
Hi jdkaye,

that seems like the way to go

I'm running Red Hat Ent 5.0.

I have that file at
/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl/ltdl.h
/usr/share/libtool/libltdl/ltdl.h

I'll copy to '/usr/include/' and see how that goes.

Hey, that worked much better though still fell over toward the end, the error message now being;

I looked for that atomic.h and it's everywhere. Loads of those asm folders too.

Totally clueless on how to proceed next. Thanks in advance jdkaye for your help with this.



gcc -DHAVE_CONFIG_H -I. -I. -I. -DNONTHREADSAFE -I/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl/include -I/usr/include -O3 -DDBUG_OFF -I/home/eberwick/BO_3_1/bobje/mysql/include -mcpu=pentiumpro -g -O2 -MT libmyodbc3_la-catalog.lo -MD -MP -MF .deps/libmyodbc3_la-catalog.Tpo -c catalog.c -fPIC -DPIC -o .libs/libmyodbc3_la-catalog.o
`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.
In file included from ../MYODBC_MYSQL.h:12,
from myodbc3.h:37,
from catalog.c:44:
/home/eberwick/BO_3_1/bobje/mysql/include/my_global.h:361:24: error: asm/atomic.h: No such file or directory
make[2]: *** [libmyodbc3_la-catalog.lo] Error 1
make[2]: Leaving directory `/tmp/mysql-connector-odbc-3.51.27r695/driver'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/tmp/mysql-connector-odbc-3.51.27r695/driver'
make: *** [all-recursive] Error 1

Hi Nedzer,
There is an atomic.h that is found in /asm-[your architecture]/atomic.h
This is found in your kernel header files. Have you installed the header files for you kernel?
Cheers,
jdk

nedzer 01-23-2009 08:29 AM

make file can't find a "ltdl.h" file
 
Hi,

I went looking for config.h

There was loads of them

/usr/src/kernels/2.6.18-128.el5-i686/include/linux/config.h
/usr/src/kernels/2.6.18-128.el5-i686/include/config/i2o/config.h
/usr/src/kernels/2.6.18-92.1.22.el5-i686/include/config/x86/find/smp/config.h
/usr/src/kernels/2.6.18-92.1.22.el5-i686/include/config/i2o/config.h
+ loads more...


I'm not sure which one to edit. I'll ask around the traps here, but if it's obvious to you let me know, Cheers.

nedzer 01-23-2009 08:36 AM

Hi jdkaye,

/usr/src/kernels/2.6.18-92.1.22.el5-i686/include/asm-i386/

there is indeed an atomic.h file

should I edit file like what Agrouf suggested to do with the config.h so as config.h does not refer to this atomic file?

Still don't know which config.h file he's on about. Have you any idea's, there loads of them.

Cheers, Ed

nedzer 01-23-2009 09:16 AM

total list of config.h files found in my system

note I have a few leagcy attepmts at installing BOXI 3.1 at Desktop bobje so these can be ignored.

My instance is running from
/home/eberwick/BO_3_1/bobje/

Cheers, Ed


/home/eberwick/BO_3_1/bobje/mysql/include/config.h
/home/eberwick/BO_3_1/perl/lib/5.8.8/i686-linux/CORE/config.h
/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/Drivers/nn/config.h
/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl/config.h
/home/eberwick/Desktop/bobje/mysql/include/config.h
/home/eberwick/Desktop/bobje/unixODBC-2.2.14/Drivers/nn/config.h
/home/eberwick/Desktop/bobje/unixODBC-2.2.14/libltdl/config.h
/home/eberwick/Desktop/perl/lib/5.8.8/i686-linux/CORE/config.h
/home/eberwick/bobje/mysql/include/config.h
/home/eberwick/perl/lib/5.8.8/i686-linux/CORE/config.h
/usr/include/libuser/config.h
/usr/include/pci/config.h
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/config.h
/usr/src/kernels/2.6.18-128.el5-i686/include/config/i2o/config.h
/usr/src/kernels/2.6.18-128.el5-i686/include/config/x86/find/smp/config.h
/usr/src/kernels/2.6.18-128.el5-i686/include/linux/config.h
/usr/src/kernels/2.6.18-92.1.18.el5-i686/include/config/i2o/config.h
/usr/src/kernels/2.6.18-92.1.18.el5-i686/include/config/x86/find/smp/config.h
/usr/src/kernels/2.6.18-92.1.18.el5-i686/include/linux/config.h
/usr/src/kernels/2.6.18-92.1.22.el5-i686/include/config/i2o/config.h
/usr/src/kernels/2.6.18-92.1.22.el5-i686/include/config/x86/find/smp/config.h
/usr/src/kernels/2.6.18-92.1.22.el5-i686/include/linux/config.h

jdkaye 01-23-2009 09:53 AM

Quote:

Originally Posted by nedzer (Post 3418600)
Hi jdkaye,

/usr/src/kernels/2.6.18-92.1.22.el5-i686/include/asm-i386/

there is indeed an atomic.h file

should I edit file like what Agrouf suggested to do with the config.h so as config.h does not refer to this atomic file?

Still don't know which config.h file he's on about. Have you any idea's, there loads of them.

Cheers, Ed

Hi Nezder,
It would help to know what kernel you're running. If you're not sure then at a terminal type
Code:

uname -a
You should see one of your atomic.h files as a subfolder containing this kernel name. Since the program you're compiling is looking for atomic.h in an asm folder, then find the one that matches your kernel and that should be it. If you don't find an atomic.h in a folder that matches your current kernel then you need to download and install the header files for that kernel.

Agrouf knows a lot more than me, so I'd certainly follow his/her suggestion. Just make a note of what you've done in case you have to undo it.
Cheers,
jdk

nedzer 01-23-2009 11:07 AM

Hi,

I edited the config.h

[root@moran tmp]# cat tmp.out | xargs grep HAVE_ATOMIC_ADD
/home/eberwick/BO_3_1/bobje/mysql/include/config.h:#define HAVE_ATOMIC_ADD 1

and commented out the offending line with */

I then reran the 'make'

and this the error I have now. More to do with the
/home/eberwick/BO_3_1/bobje/mysql/include/my_global.h:361:24: error: asm/atomic.h: No such file or directory
see appended

Thanks for hanging in there lads and reading these posts, fair play to you.

[root@moran mysql-connector-odbc-3.51.27r695]# make
Making all in util
make[1]: Entering directory `/tmp/mysql-connector-odbc-3.51.27r695/util'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/tmp/mysql-connector-odbc-3.51.27r695/util'
Making all in driver
make[1]: Entering directory `/tmp/mysql-connector-odbc-3.51.27r695/driver'
make all-am
make[2]: Entering directory `/tmp/mysql-connector-odbc-3.51.27r695/driver'
if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DNONTHREADSAFE -I/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl/include -I/usr/include -O3 -DDBUG_OFF -I/home/eberwick/BO_3_1/bobje/mysql/include -mcpu=pentiumpro -g -O2 -MT libmyodbc3_la-catalog.lo -MD -MP -MF ".deps/libmyodbc3_la-catalog.Tpo" -c -o libmyodbc3_la-catalog.lo `test -f 'catalog.c' || echo './'`catalog.c; \
then mv -f ".deps/libmyodbc3_la-catalog.Tpo" ".deps/libmyodbc3_la-catalog.Plo"; else rm -f ".deps/libmyodbc3_la-catalog.Tpo"; exit 1; fi
gcc -DHAVE_CONFIG_H -I. -I. -I. -DNONTHREADSAFE -I/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl/include -I/usr/include -O3 -DDBUG_OFF -I/home/eberwick/BO_3_1/bobje/mysql/include -mcpu=pentiumpro -g -O2 -MT libmyodbc3_la-catalog.lo -MD -MP -MF .deps/libmyodbc3_la-catalog.Tpo -c catalog.c -fPIC -DPIC -o .libs/libmyodbc3_la-catalog.o
`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.
In file included from ../MYODBC_MYSQL.h:12,
from myodbc3.h:37,
from catalog.c:44:
/home/eberwick/BO_3_1/bobje/mysql/include/my_global.h:361:24: error: asm/atomic.h: No such file or directory
make[2]: *** [libmyodbc3_la-catalog.lo] Error 1
make[2]: Leaving directory `/tmp/mysql-connector-odbc-3.51.27r695/driver'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/tmp/mysql-connector-odbc-3.51.27r695/driver'
make: *** [all-recursive] Error 1
[root@moran mysql-connector-odbc-3.51.27r695]#









[root@moran mysql-connector-odbc-3.51.27r695]# make
Making all in util
make[1]: Entering directory `/tmp/mysql-connector-odbc-3.51.27r695/util'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/tmp/mysql-connector-odbc-3.51.27r695/util'
Making all in driver
make[1]: Entering directory `/tmp/mysql-connector-odbc-3.51.27r695/driver'
make all-am
make[2]: Entering directory `/tmp/mysql-connector-odbc-3.51.27r695/driver'
if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -DNONTHREADSAFE -I/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl/include -I/usr/include -O3 -DDBUG_OFF -I/home/eberwick/BO_3_1/bobje/mysql/include -mcpu=pentiumpro -g -O2 -MT libmyodbc3_la-catalog.lo -MD -MP -MF ".deps/libmyodbc3_la-catalog.Tpo" -c -o libmyodbc3_la-catalog.lo `test -f 'catalog.c' || echo './'`catalog.c; \
then mv -f ".deps/libmyodbc3_la-catalog.Tpo" ".deps/libmyodbc3_la-catalog.Plo"; else rm -f ".deps/libmyodbc3_la-catalog.Tpo"; exit 1; fi
gcc -DHAVE_CONFIG_H -I. -I. -I. -DNONTHREADSAFE -I/home/eberwick/BO_3_1/unixodbc/unixODBC-2.2.14/libltdl/include -I/usr/include -O3 -DDBUG_OFF -I/home/eberwick/BO_3_1/bobje/mysql/include -mcpu=pentiumpro -g -O2 -MT libmyodbc3_la-catalog.lo -MD -MP -MF .deps/libmyodbc3_la-catalog.Tpo -c catalog.c -fPIC -DPIC -o .libs/libmyodbc3_la-catalog.o
`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.
In file included from ../MYODBC_MYSQL.h:12,
from myodbc3.h:37,
from catalog.c:44:
/home/eberwick/BO_3_1/bobje/mysql/include/my_global.h:361:24: error: asm/atomic.h: No such file or directory
make[2]: *** [libmyodbc3_la-catalog.lo] Error 1

nedzer 01-23-2009 11:13 AM

[eberwick@moran unixODBC-2.2.14]$ uname -a
Linux moran.anam.com 2.6.18-92.1.22.el5 #1 SMP Fri Dec 5 09:29:46 EST 2008 i686 i686 i386 GNU/Linux

am I i386 or i686?

most of my config.h files seem to be within i686 folders.

Friday evening. Cheers for the direction this week jdkaye. I'm eager for this problem to sort itself out if only to stop badgering yourself and Agrouf, have a good weekend.

jdkaye 01-23-2009 11:41 AM

Quote:

Originally Posted by nedzer (Post 3418782)
[eberwick@moran unixODBC-2.2.14]$ uname -a
Linux moran.anam.com 2.6.18-92.1.22.el5 #1 SMP Fri Dec 5 09:29:46 EST 2008 i686 i686 i386 GNU/Linux

am I i386 or i686?

most of my config.h files seem to be within i686 folders.

Friday evening. Cheers for the direction this week jdkaye. I'm eager for this problem to sort itself out if only to stop badgering yourself and Agrouf, have a good weekend.

I'm confused by the result of the uname-a command. For example on my machine, the result is this:
Code:

Linux Attila 2.6.26-1-686 #1
So you can see I'm using a 686 kernel. I've never seen a kernel label ending in el5 but then I'm not familiar with CentOS naming conventions. The 2.6.18 kernel (if that's what it is) is a bit old. You might consider updating it to a more recent version and remember to get the kernel source and the header files if you do this. That may solve the problem. I would guess you're using the 686 kernel (2.6.18-92.1.22.el5-686) but the file location, /usr/src/kernels/2.6.18-92.1.22.el5-i686/include/asm-i386/, seems contradictory.

On my system, for example, atomic.h is found here:
/usr/src/linux-headers-2.6.26-1-common/include/asm-x86/atomic.h
but maybe naming conventions are very different between our two distros (CentOS and Debian).

I'm sorry I can't say more but maybe somebody who knows more about CentOS can help out. You are sure you have installed both the kernel source and the headers for the kernel you're running?

Enjoy your weekend also.
Cheers,
jdk


All times are GMT -5. The time now is 10:50 AM.