Hi,
is something missing on opensuse ?
→ I mean the file: gnu/stubs-x32.h
Hi,
I use a 64bit cpu CPU E3-1275 V2 and cross-compile a 32bit software using :
g++-8 -m32
with the target :
i686-suse-linux-gnu
The configure setting the makefile variable :
target_cpu = i686
And than libtool is called with :
/bin/bash ../../libtool --tag=CC --mode=compile /usr/bin/ccache gcc-8
-m32 -DHAVE_CONFIG_H -I. -I/path/to/theLink/tclmsgque -I../.. -DNDEBUG
-DMQ_HAS_THREAD -shared -I/path/to/theLink/tclmsgque/../libmsgque
-I/path/to/ext/i686-suse-linux-gnu/release/include -DUSE_TCL_STUBS
-Wstrict-prototypes -Wconversion -Werror=maybe-uninitialized -Werror
-DMQ_IGNORE_EXTERN -fvisibility=hidden -O2 -Wall -Wcast-align -pthread
-MT tclmsgque_la-MqExceptionC_tcl.lo -MD -MP -MF
.deps/tclmsgque_la-MqExceptionC_tcl.Tpo -c -o
tclmsgque_la-MqExceptionC_tcl.lo `test -f 'MqExceptionC_tcl.c'
creating the libtool execute gcc call :
/bin/bash ../../libtool --tag=CC --mode=compile /usr/bin/ccache gcc-8
-m32 -DHAVE_CONFIG_H -I. -I/path/to/theLink/tclmsgque -I../.. -DNDEBUG
-DMQ_HAS_THREAD -shared -I/path/to/theLink/tclmsgque/../libmsgque
-I/path/to/ext/i686-suse-linux-gnu/release/include -DUSE_TCL_STUBS
-Wstrict-prototypes -Wconversion -Werror=maybe-uninitialized -Werror
-DMQ_IGNORE_EXTERN -fvisibility=hidden -O2 -Wall -Wcast-align -pthread
-MT tclmsgque_la-MqErrorC_tcl.lo -MD -MP -MF
.deps/tclmsgque_la-MqErrorC_tcl.Tpo -c -o tclmsgque_la-MqErrorC_tcl.lo
`test -f 'MqErrorC_tcl.c' || echo
'/home/dev1usr/Project/NHI1/theLink/tclmsgque/'`MqErrorC_tcl.c
PROBLEM: If I compare performance between 64 and 32 bit build executable
than I figure out that the 32bit is slower
-> the question is now… why?
possible answer:
1. libtool does not use the target_cpu
2. extensions available on 64bit cpu (like E3-1275 V2) are NOT used with
the 32bit build
this mean the cpu is not proper used
from gcc docu:
-m32: The -m32option sets |int|, |long|, and pointer types to 32
bits, and generates code that runs on any i386 system.
-mx32: The -mx32option sets |int|, |long|, and pointer types to 32
bits, and generates code for the x86-64 architecture.
testing ...
> gcc -mx32 test.c
In file included from /usr/include/features.h:447:0,
from /usr/include/bits/libc-header-start.h:33,
from /usr/include/stdio.h:27,
from test.c:1:
/usr/include/gnu/stubs.h:13:11: fatal error: gnu/stubs-x32.h: Datei oder
Verzeichnis nicht gefunden
# include <gnu/stubs-x32.h>
^~~~~~~~~~~~~~~~~
compilation terminated.
checking glibc: -> stubs-x32.h missing.
# rpm -ql glibc-devel-32bit
/usr/include/gnu
/usr/include/gnu/lib-names-32.h
/usr/include/gnu/stubs-32.h
/usr/lib/Mcrt1.o
/usr/lib/Scrt1.o
/usr/lib/crt1.o
/usr/lib/crti.o
/usr/lib/crtn.o
/usr/lib/gcrt1.o
/usr/lib/libBrokenLocale.so
/usr/lib/libanl.so
/usr/lib/libc.so
/usr/lib/libc_nonshared.a
/usr/lib/libcidn.so
/usr/lib/libcrypt.so
/usr/lib/libdl.so
/usr/lib/libg.a
/usr/lib/libieee.a
/usr/lib/libm.so
/usr/lib/libmcheck.a
/usr/lib/libnss_compat.so
/usr/lib/libnss_db.so
/usr/lib/libnss_dns.so
/usr/lib/libnss_files.so
/usr/lib/libnss_hesiod.so
/usr/lib/libowcrypt.so
/usr/lib/libpthread.so
/usr/lib/libpthread_nonshared.a
/usr/lib/libresolv.so
/usr/lib/librpcsvc.a
/usr/lib/librt.so
/usr/lib/libthread_db.so
/usr/lib/libutil.so
question: where get I the "stubs-x32.h" setup ?