编译 "stress-ng" 包的静态链接可执行文件
Compile a statically linked executable of the "stress-ng" package
我正在尝试编译 "stress-ng" 包以生成静态链接的可执行文件以在 GEM5 全系统模拟器中使用它。
可以下载此软件包的 tarball here。我要编译的版本是 0.07.08.
要编译此包的动态链接可执行文件,只需 "make"。这对我有用。
但是,由于我需要从 GEM5 全系统模拟中 运行 "stress-ng" exe,我需要确保该 exe 是独立的。这通常是使用“-static”CFLAG 选项完成的,但是,对于 "stress-ng",我在尝试此选项时遇到错误。
以下是重现此错误的方法。编辑 "Makefile" 并在第 25 行末尾添加“-static”选项。第 25 行应如下所示:
CFLAGS += -Wall -Wextra -DVERSION='"$(VERSION)"' -O2 -std=gnu99 -static
保存然后make,你会看到下面的错误:
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libpthread.a(lowlevellock.o): In function `__lll_lock_wait_private':
/build/eglibc-3GlaMS/eglibc-2.19/nptl/../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:78: multiple definition of `__lll_lock_wait_private'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libc.a(libc-lowlevellock.o):(.text+0x0): first defined here
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libpthread.a(lowlevellock.o): In function `__lll_unlock_wake_private':
/build/eglibc-3GlaMS/eglibc-2.19/nptl/../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:328: multiple definition of `__lll_unlock_wake_private'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libc.a(libc-lowlevellock.o):(.text+0x30): first defined here
collect2: ld returned 1 exit status
make: *** [stress-ng] Error 1
最后,OS是Ubuntu14.04,cc版本是4.6.4。
我是否遗漏了其他一些 CFLAG 选项?
我已经对 stress-ng 存储库推送了一个新的修复程序,现在允许静态链接。问题是 -lc 在 -lpthread 之前,这导致了问题。
拉取最新的更改然后构建:
STATIC=1 使
我正在尝试编译 "stress-ng" 包以生成静态链接的可执行文件以在 GEM5 全系统模拟器中使用它。
可以下载此软件包的 tarball here。我要编译的版本是 0.07.08.
要编译此包的动态链接可执行文件,只需 "make"。这对我有用。
但是,由于我需要从 GEM5 全系统模拟中 运行 "stress-ng" exe,我需要确保该 exe 是独立的。这通常是使用“-static”CFLAG 选项完成的,但是,对于 "stress-ng",我在尝试此选项时遇到错误。
以下是重现此错误的方法。编辑 "Makefile" 并在第 25 行末尾添加“-static”选项。第 25 行应如下所示:
CFLAGS += -Wall -Wextra -DVERSION='"$(VERSION)"' -O2 -std=gnu99 -static
保存然后make,你会看到下面的错误:
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libpthread.a(lowlevellock.o): In function `__lll_lock_wait_private':
/build/eglibc-3GlaMS/eglibc-2.19/nptl/../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:78: multiple definition of `__lll_lock_wait_private'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libc.a(libc-lowlevellock.o):(.text+0x0): first defined here
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libpthread.a(lowlevellock.o): In function `__lll_unlock_wake_private':
/build/eglibc-3GlaMS/eglibc-2.19/nptl/../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:328: multiple definition of `__lll_unlock_wake_private'
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/libc.a(libc-lowlevellock.o):(.text+0x30): first defined here
collect2: ld returned 1 exit status
make: *** [stress-ng] Error 1
最后,OS是Ubuntu14.04,cc版本是4.6.4。
我是否遗漏了其他一些 CFLAG 选项?
我已经对 stress-ng 存储库推送了一个新的修复程序,现在允许静态链接。问题是 -lc 在 -lpthread 之前,这导致了问题。
拉取最新的更改然后构建:
STATIC=1 使