1

私はマシン上RHEL 5.8にいx86_64ます:

$ uname -r
2.6.18-308.1.1.el5
$ uname -m
x86_64
$

i386ソースを互換性があるようにクロスコンパイルしてみてください:

CFLAGS += -m32
LDFLAGS += -L/lib -lpthread -luuid

しかし、リンクステージはエラーで失敗します:

/usr/bin/ld: skipping incompatible /usr/lib64/libuuid.so when searching for -luuid
/usr/bin/ld: skipping incompatible /usr/lib64/libuuid.a when searching for -luuid
/usr/bin/ld: cannot find -luuid
collect2: ld returned 1 exit status

実際、ホストマシンには次のものがあり/lib/libuuid.so.1.2ます。

$ readelf -h /lib/libuuid.so.1.2
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry point address:               0xf90
  Start of program headers:          52 (bytes into file)
  Start of section headers:          13352 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         6
  Size of section headers:           40 (bytes)
  Number of section headers:         28
  Section header string table index: 27
$

ldこのリンクの問題を修正するオプションはありますか?

4

2 に答える 2

1

特定の共有オブジェクトに対してリンクする場合は、それをコンパイラまたはリンカーに直接渡す必要があります。

于 2012-04-12T07:02:59.233 に答える