轉載: 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