1
我試圖編譯「壓力ng」包產生靜態鏈接的可執行文件,以在GEM5完整系統模擬器中使用它。編譯「壓力ng」包的靜態鏈接可執行文件
這個包的tarball可以下載here。我試圖編譯的版本是0.07.08。
要編譯此軟件包的動態鏈接可執行文件,只需「make」即可。這對我有用。
但是,由於我需要在GEM5完整系統模擬中運行「stress-ng」exe,所以我需要確保exe是獨立的。這通常使用「-static」CFLAG選項完成,但是,對於「stress-ng」,當我嘗試此選項時出現錯誤。
下面是重現此錯誤的方法。編輯「Makefile文件」,並以線#25號線25結尾處添加「-static」選項應如下所示:
CFLAGS += -Wall -Wextra -DVERSION='"$(VERSION)"' -O2 -std=gnu99 -static
保存然後進行,你會看到下面的錯誤:
/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是Ubuntu 14.04和cc版本是4.6.4。
我在這裏是否缺少一些其他的CFLAG選項?
您是該工具的開發者,不是嗎?非常感謝幫助人。我還有一個問題:是否有任何問題或限制阻止在gem5模擬系統中使用stress-ng?我在問,因爲當我在一個模擬系統中嘗試過stress-ng(帶有選項「--cpu 4 -b 1 --vm 4 --vm-bytes 1M --timeout 4s」)時,我得到一個錯誤,幸運的是並沒有阻止工人的執行,但我不確定錯誤的嚴重程度。錯誤提示「stress-ng:error:[46]/sys/devices/system/cpu不存在」。請任何想法嗎? – user8420488483439