2016-12-05 73 views
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選項?

回答

0

我已經推出了新的修復程序,現在允許靜態鏈接的壓力ng回購。問題在於-lc在-lpthread之前,導致了問題。

拉的最新變化,然後用建:

STATIC = 1請

+0

您是該工具的開發者,不是嗎?非常感謝幫助人。我還有一個問題:是否有任何問題或限制阻止在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

相關問題