編譯qemu的一個修改版本時遇到timer_settime@@GLIBC_2.2'的問題

weixin_33941350發表於2015-11-29

轉載: http://blog.sina.com.cn/s/blog_a5ba8b0f0101snq7.html

 

自己在qemu上做了一些修改,來完成一些所需的工作,但是之前修改的時候是在我 的mac上的做的,mac上裝的ubuntu是64bit的,後來轉到thinkpad上做的時候,不想把檔案從新合,就直接打包拷貝到thinkpad 上的ubuntu系統裡了,但是thinkpad上的ubuntu系統時32bit的,configure後make時出現了以下錯誤:

/usr/bin/ld: ../qemu-timer.o: undefined reference to symbol 'timer_settime@@GLIBC_2.2'
/usr/bin/ld: note: 'timer_settime@@GLIBC_2.2' is defined in DSO /lib/i386-linux-gnu/librt.so.1 so try adding it to the linker command line
/lib/i386-linux-gnu/librt.so.1: could not read symbols: 無效的操作
collect2: 錯誤: ld 返回 1
make[1]: *** [qemu-system-arm] 錯誤 1
make: *** [subdir-arm-softmmu] 錯誤 2
搜了半天,後來在一個論壇裡找到一個方法,修復了這個問題,但是我目前還沒弄明白問題的所在,先把解決方案放這兒備用吧。
但是怕地址失效,就把關鍵的地方簡介的說下:
主要是裡面提供了一個patch,給configure檔案打完補丁之後就解決了,patch裡面的內容是:
--- configure.orig 2013-06-13 10:56:41.516276000 +0100
+++ configure 2013-06-13 11:20:26.010368566 +0100
@@ -1362,7 +1362,7 @@
 cat > $TMPC <<EOF
 #include
 #include
-int main(void) { clockid_t id; return clock_gettime(id, NULL); }
+int main(void) { struct itimerspec v; timer_t t; return timer_gettime (t, &v); }
 EOF
 
 rt=no
可以直接把上面的內容拷貝到自己建立的空檔案中,檔名論文裡面定義的是configure.patch,但是我覺得其他的名字應該也可以,然後執行下面的指令
patch configure configure.patch
之後重新configure後再make就沒有問題了。
 
或者修改Makefile.target, 新增LIBS+=-lz -lrt -lm
 
 
 
 

相關文章