Иди строить с другим glibc - PullRequest
6 голосов
/ 01 апреля 2019

Я установил другую версию GLIBC и хочу скомпилировать код Golang для этой новой GLIBC.

Я попробовал следующую команду для динамической компиляции:

go build --ldflags '-linkmode external -L /path/to/another_glibc/

Но когда я запускаюldd "go_executable", он по-прежнему показывает связанный с glibc по умолчанию.

Вывод:

linux-vdso.so.1 =>  (0x00007fff29da7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f128a93c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f128ad06000)

Ожидаемый вывод:

linux-vdso.so.1 =>  (0x00007fff45fa7000)
libc.so.6 => /another_glibc/lib/libc.so.6 (0x00007f5cd2067000)
/another_glibc/ld-2.29.so => /lib64/ld-linux-x86-64.so.2 (0x00007f5cd2420000)

Чего здесь не хватает?

1 Ответ

3 голосов
/ 01 апреля 2019

Перед тем как сделать go build Комплект

CGO_LDFLAGS

Динамический:

export CGO_LDFLAGS="-Xlinker -rpath=/path/to/another_glibc/lib"

Статическая:

export CGO_LDFLAGS="-Xlinker -rpath=/path/to/another_glibc/lib -static"

CGO_LDFLAGS позволяет вам устанавливать GCC-подобные флаги ld для Go.

...