Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
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
Any idea how I can point the make to where the "ltdl.h" file is to get this make proceed?
[root@moran mysql-connector-odbc-3.51.27r695]# make --include-dir=/usr/share/libtool/libltdl
Making all in util
make: 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,
../MYODBC_ODBC.h:8:19: error: ltdl.h: No such file or directory
make: *** [MYODBCUtilAllocDataSource.lo] Error 1
make: Leaving directory `/tmp/mysql-connector-odbc-3.51.27r695/util'
make: *** [all-recursive] Error 1
[root@moran mysql-connector-odbc-3.51.27r695]# locate ltdl.h
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.
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.
"[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] ...
-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.
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 <firstname.lastname@example.org>
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.
It would help to know what kernel you're running. If you're not sure then at a terminal type
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.
[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:
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:
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?