autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to compile 32bit library on 64bit x86_64 systems?


From: Geeky Jim
Subject: Re: How to compile 32bit library on 64bit x86_64 systems?
Date: Fri, 14 Sep 2007 13:42:55 -0500

Hi Ralf,

> Hello Jim,
>
> * Geeky Jim wrote on Fri, Sep 14, 2007 at 08:00:30PM CEST:
> >
> > I am having difficulties creating libpqxx 2.6.9 as a 32bit library on 64bit
> > x86_64 systems.
> > It is packaged using GNU buildtools.  I tried to insert all the flags below
> > within the
> >  Makefile.am, but the build is very persistent in making
>
> Try not changing the package at all, but
>
>   ./configure CPPFLAGS=-m32 LDFLAGS=-m32
>   make
>
> and if that fails, then please post the output of
>   ./libtool --config
>   ./libtool --version
>
> and the part of 'make' output where libpqxx.la is created.

Your method of passing in the flag parameters via the configure script works.
But the make process failed, because the library path is still pointed to here

-L/usr/lib64

(Is there a flag I can override -L/usr/lib64 to -L/usr/lib?)

I will provide the out of ./libtool --config, ./libtool --version, and the make
output in the following three sections.

./libtool --config

# Libtool was configured on host address@hidden:

# Shell to use when invoking shell scripts.
SHELL="/bin/sh"

# Whether or not to build shared libraries.
build_libtool_libs=yes

# Whether or not to build static libraries.
build_old_libs=yes

# Whether or not to add -lc for building shared libraries.
build_libtool_need_lc=no

# Whether or not to disallow shared libs when runtime libs are static
allow_libtool_libs_with_static_runtimes=no

# Whether or not to optimize for fast installation.
fast_install=yes

# The host system.
host_alias=
host=x86_64-unknown-linux-gnu
host_os=linux-gnu

# The build system.
build_alias=
build=x86_64-unknown-linux-gnu
build_os=linux-gnu

# An echo program that does not interpret backslashes.
echo="echo"

# The archiver.
AR="ar"
AR_FLAGS="cru"

# A C compiler.
LTCC="gcc"

# LTCC compiler flags.
LTCFLAGS="-g -O2"

# A language-specific compiler.
CC="gcc"

# Is the compiler the GNU C compiler?
with_gcc=yes

# An ERE matcher.
EGREP="/bin/grep -E"

# The linker used to build libraries.
LD="/usr/bin/ld -m elf_i386"

# Whether we need hard or soft links.
LN_S="ln -s"

# A BSD-compatible nm program.
NM="/usr/bin/nm -B"

# A symbol stripping program
STRIP="strip"

# Used to examine libraries when file_magic_cmd begins "file"
MAGIC_CMD=file

# Used on cygwin: DLL creation program.
DLLTOOL="dlltool"

# Used on cygwin: object dumper.
OBJDUMP="objdump"

# Used on cygwin: assembler.
AS="as"

# The name of the directory that contains temporary libtool files.
objdir=.libs

# How to create reloadable object files.
reload_flag=" -r"
reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"

# How to pass a linker flag through the compiler.
wl="-Wl,"

# Object file suffix (normally "o").
objext="o"

# Old archive suffix (normally "a").
libext="a"

# Shared library suffix (normally ".so").
shrext_cmds='.so'

# Executable file suffix (normally "").
exeext=""

# Additional compiler flags for building library objects.
pic_flag=" -fPIC -DPIC"
pic_mode=default

# What is the maximum length of a command?
max_cmd_len=32768

# Does compiler simultaneously support -c and -o options?
compiler_c_o="yes"

# Must we lock files when doing compilation?
need_locks="no"

# Do we need the lib prefix for modules?
need_lib_prefix=no

# Do we need a version for libraries?
need_version=no

# Whether dlopen is supported.
dlopen_support=unknown

# Whether dlopen of programs is supported.
dlopen_self=unknown

# Whether dlopen of statically linked programs is supported.
dlopen_self_static=unknown

# Compiler flag to prevent dynamic linking.
link_static_flag="-static"

# Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin"

# Compiler flag to allow reflexive dlopens.
export_dynamic_flag_spec="\${wl}--export-dynamic"

# Compiler flag to generate shared objects directly from archives.
whole_archive_flag_spec="\${wl}--whole-archive\$convenience
\${wl}--no-whole-archive"

# Compiler flag to generate thread-safe objects.
thread_safe_flag_spec=""

# Library versioning type.
version_type=linux

# Format of library name prefix.
libname_spec="lib\$name"

# List of archive names.  First name is the real one, the rest are links.
# The last name is the one that the linker finds with -lNAME.
library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix
\${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"

# The coded name of the library, if different from the real name.
soname_spec="\${libname}\${release}\${shared_ext}\$major"

# Commands used to build and install an old-style archive.
RANLIB="ranlib"
old_archive_cmds="\$AR \$AR_FLAGS
\$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib"
old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
old_postuninstall_cmds=""

# Create an old-style archive from a shared archive.
old_archive_from_new_cmds=""

# Create a temporary old-style archive to link instead of a shared archive.
old_archive_from_expsyms_cmds=""

# Commands used to build and install a shared archive.
archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags
\${wl}-soname \$wl\$soname -o \$lib"
archive_expsym_cmds="\$echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
  cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >>
\$output_objdir/\$libname.ver~
  \$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
          \$CC -shared \$libobjs \$deplibs \$compiler_flags
\${wl}-soname \$wl\$soname \${wl}-version-script
\${wl}\$output_objdir/\$libname.ver -o \$lib"
postinstall_cmds=""
postuninstall_cmds=""

# Commands used to build a loadable module (assumed same as above if empty)
module_cmds=""
module_expsym_cmds=""

# Commands to strip libraries.
old_striplib="strip --strip-debug"
striplib="strip --strip-unneeded"

# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects=""

# Dependencies to place after the objects being linked to create a
# shared library.
postdep_objects=""

# Dependencies to place before the objects being linked to create a
# shared library.
predeps=""

# Dependencies to place after the objects being linked to create a
# shared library.
postdeps=""

# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=""

# Method to check whether dependent libraries are shared objects.
deplibs_check_method="pass_all"

# Command to use when deplibs_check_method == file_magic.
file_magic_cmd="\$MAGIC_CMD"

# Flag that allows shared libraries with undefined symbols to be built.
allow_undefined_flag=""

# Flag that forces no undefined symbols.
no_undefined_flag=""

# Commands used to finish a libtool library installation in a directory.
finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"

# Same as above, but a single script fragment to be evaled but not shown.
finish_eval=""

# Take the output of nm and produce a listing of raw symbols and C names.
global_symbol_pipe="sed -n -e 's/^.*[
]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[       ][
]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"

# Transform the output of nm in a proper C declaration
global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'"

# Transform the output of nm in a C name address pair
global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/
{\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^
]*\\)\$/  {\"\\2\", (lt_ptr) \\&\\2},/p'"

# This is the shared library runtime path variable.
runpath_var=LD_RUN_PATH

# This is the shared library path variable.
shlibpath_var=LD_LIBRARY_PATH

# Is shlibpath searched before the hard-coded library search path?
shlibpath_overrides_runpath=no

# How to hardcode a shared library path into an executable.
hardcode_action=immediate

# Whether we should hardcode library paths into libraries.
hardcode_into_libs=yes

# Flag to hardcode $libdir into a binary during linking.
# This must work even if $libdir does not exist.
hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir"

# If ld is used when linking, flag to hardcode $libdir into
# a binary during linking. This must work even if $libdir does
# not exist.
hardcode_libdir_flag_spec_ld=""

# Whether we need a single -rpath flag with a separated argument.
hardcode_libdir_separator=""

# Set to yes if using DIR/libNAME during linking hardcodes DIR into the
# resulting binary.
hardcode_direct=no

# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
# resulting binary.
hardcode_minus_L=no

# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
# the resulting binary.
hardcode_shlibpath_var=unsupported

# Set to yes if building a shared library automatically hardcodes DIR
into the library
# and all subsequent libraries and executables linked against it.
hardcode_automatic=no

# Variables whose values should be saved in libtool wrapper scripts and
# restored at relink time.
variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH
GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"

# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=no

# Compile-time system search path for libraries
sys_lib_search_path_spec=" /usr/lib/gcc/x86_64-redhat-linux/4.1.2/
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/lib/x86_64-redhat-linux/4.1.2/
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/lib/
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../x86_64-redhat-linux/4.1.2/
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../
/lib/x86_64-redhat-linux/4.1.2/ /lib/
/usr/lib/x86_64-redhat-linux/4.1.2/ /usr/lib/"

# Run-time system search path for libraries
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/mysql
/usr/lib64/mysql /usr/lib/opensync/ /usr/lib/opensync/formats/
/usr/lib/opensync/plugins/ /usr/lib64/opensync/
/usr/lib64/opensync/formats/ /usr/lib64/opensync/plugins/
/usr/lib/qt-3.3/lib /usr/lib64/qt-3.3/lib "

# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path=""

# Set to yes if exported symbols are required.
always_export_symbols=no

# The commands to list exported symbols.
export_symbols_cmds="\$NM \$libobjs \$convenience |
\$global_symbol_pipe | \$SED 's/.* //' | sort | uniq >
\$export_symbols"

# The commands to extract the exported symbol list from a shared archive.
extract_expsyms_cmds=""

# Symbols that should not be listed in the preloaded symbols.
exclude_expsyms="_GLOBAL_OFFSET_TABLE_"

# Symbols that must always be exported.
include_expsyms=""


./libtool --version
ltmain.sh (GNU libtool) 1.5.22 Debian 1.5.22-4 (1.1220.2.365
2005/12/18 22:14:06)

Copyright (C) 2005  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


'make' output:

/bin/sh ../libtool --tag=CXX   --mode=link g++  -g -O2  -release 2.6.9
-rpath /home/huangj/local/lib  -m32 -L/usr/lib64 -o libpqxx.la -rpath
/home/huangj/local/lib binarystring.lo cachedresult.lo
connection_base.lo connection.lo cursor.lo dbtransaction.lo except.lo
largeobject.lo nontransaction.lo oldcursor.lo pipeline.lo
prepared_statement.lo result.lo robusttransaction.lo subtransaction.lo
tablereader.lo tablestream.lo tablewriter.lo transaction.lo
transaction_base.lo util.lo  -lpq -lpq
rm -fr  .libs/libpqxx-2.6.9.so .libs/libpqxx.a .libs/libpqxx.la
.libs/libpqxx.lai .libs/libpqxx.so
g++ -shared -nostdlib
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crti.o
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/crtbeginS.o
.libs/binarystring.o .libs/cachedresult.o .libs/connection_base.o
.libs/connection.o .libs/cursor.o .libs/dbtransaction.o .libs/except.o
.libs/largeobject.o .libs/nontransaction.o .libs/oldcursor.o
.libs/pipeline.o .libs/prepared_statement.o .libs/result.o
.libs/robusttransaction.o .libs/subtransaction.o .libs/tablereader.o
.libs/tablestream.o .libs/tablewriter.o .libs/transaction.o
.libs/transaction_base.o .libs/util.o  -L/usr/lib64 -lpq
-L/usr/lib/gcc/x86_64-redhat-linux/4.1.2
-L/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64
-L/lib/../lib64 -L/usr/lib/../lib64 -lstdc++ -lm -lc -lgcc_s
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/crtendS.o
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crtn.o  -m32
-Wl,-soname -Wl,libpqxx-2.6.9.so -o .libs/libpqxx-2.6.9.so
/usr/bin/ld: skipping incompatible /usr/lib64/libpq.so when searching for -lpq
/usr/bin/ld: skipping incompatible /usr/lib64/libpq.a when searching for -lpq
/usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libpq.so when
searching for -lpq
/usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libpq.a when
searching for -lpq
/usr/bin/ld: skipping incompatible /usr/lib/../lib64/libpq.so when
searching for -lpq
/usr/bin/ld: skipping incompatible /usr/lib/../lib64/libpq.a when
searching for -lpq
/usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libstdc++.so when searching for
-lstdc++
/usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libstdc++.a when searching for
-lstdc++
/usr/bin/ld: skipping incompatible /usr/lib64/libm.so when searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib64/libm.a when searching for -lm
/usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libm.so when
searching for -lm
/usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libm.a when
searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib/../lib64/libm.so when
searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib/../lib64/libm.a when
searching for -lm
/usr/bin/ld: skipping incompatible /usr/lib64/libc.so when searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib64/libc.a when searching for -lc
/usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libc.so when
searching for -lc
/usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libc.a when
searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/../lib64/libc.so when
searching for -lc
/usr/bin/ld: skipping incompatible /usr/lib/../lib64/libc.a when
searching for -lc
/usr/bin/ld: skipping incompatible
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcc_s.so when searching for
-lgcc_s
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crti.o' is
incompatible with i386 output
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`/usr/lib/gcc/x86_64-redhat-linux/4.1.2/crtbeginS.o' is incompatible
with i386 output
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`/usr/lib/gcc/x86_64-redhat-linux/4.1.2/crtendS.o' is incompatible
with i386 output
/usr/bin/ld: warning: i386:x86-64 architecture of input file
`/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crtn.o' is
incompatible with i386 output
(cd .libs && rm -f libpqxx.so && ln -s libpqxx-2.6.9.so libpqxx.so)
ar cru .libs/libpqxx.a  binarystring.o cachedresult.o
connection_base.o connection.o cursor.o dbtransaction.o except.o
largeobject.o nontransaction.o oldcursor.o pipeline.o
prepared_statement.o result.o robusttransaction.o subtransaction.o
tablereader.o tablestream.o tablewriter.o transaction.o
transaction_base.o util.o
ranlib .libs/libpqxx.a
creating libpqxx.la
(cd .libs && rm -f libpqxx.la && ln -s ../libpqxx.la libpqxx.la)
/bin/sh ../libtool --tag=CXX   --mode=link g++  -g -O2   -m32
-L/usr/lib64 -o rmlo rmlo.o ../src/libpqxx.la  -lpq -lpq
g++ -g -O2 -m32 -o .libs/rmlo rmlo.o  -L/usr/lib64
../src/.libs/libpqxx.so -lpq -Wl,--rpath -Wl,/home/huangj/local/lib

Thank you,
Jim




reply via email to

[Prev in Thread] Current Thread [Next in Thread]