descent@w-linux:progs$ gcc u.c -I/usr/include/libusb-1.0
/usr/lib/libusb-1.0.a
/usr/lib/libusb-1.0.a(libusb_1_0_la-io.o): In function
`libusb_try_lock_events':
(.text+0x1128): undefined reference to `pthread_mutex_trylock'
/usr/lib/libusb-1.0.a(libusb_1_0_la-linux_usbfs.o): In function `op_init':
(.text+0x337e): undefined reference to `clock_gettime'
/usr/lib/libusb-1.0.a(libusb_1_0_la-linux_usbfs.o): In function
`op_clock_gettime':
(.text+0x1b): undefined reference to `clock_gettime'
/usr/lib/libusb-1.0.a(libusb_1_0_la-linux_usbfs.o): In function
`op_clock_gettime':
(.text+0x33): undefined reference to `clock_gettime'
collect2: ld returned 1 exit status
descent@w-linux:progs$ gcc u.c -I/usr/include/libusb-1.0
/usr/lib/libusb-1.0.a -lpthread
/usr/lib/libusb-1.0.a(libusb_1_0_la-linux_usbfs.o): In function `op_init':
(.text+0x337e): undefined reference to `clock_gettime'
/usr/lib/libusb-1.0.a(libusb_1_0_la-linux_usbfs.o): In function
`op_clock_gettime':
(.text+0x1b): undefined reference to `clock_gettime'
/usr/lib/libusb-1.0.a(libusb_1_0_la-linux_usbfs.o): In function
`op_clock_gettime':
(.text+0x33): undefined reference to `clock_gettime'
collect2: ld returned 1 exit status
這是我編譯的錯誤訊息, 有很多方法可以解決你的問題。
pthread_mutex_trylock 用猜的, 應該需要 pthread -> -lpthread
man clock_gettime
NAME
clock_getres, clock_gettime, clock_settime - clock and time functions
SYNOPSIS
#include <time.h>
int clock_getres(clockid_t clk_id, struct timespec *res);
int clock_gettime(clockid_t clk_id, struct timespec *tp);
int clock_settime(clockid_t clk_id, const struct timespec *tp);
Link with -lrt.
got -lrt。
最後這樣搞定:
gcc u.c -I/usr/include/libusb-1.0 /usr/lib/libusb-1.0.a -lpthread -lrt
我這邊的測試是不需要 -static。
這要怎麼發現只能說自己找方法, 你不是也找到了嗎?
※ 引述《newranger (ranger)》之銘言:
: ....後面還有很多省略
: 提示告訴我libusb-1.0.9這東西本身也有問題,
: 自己都找不到參考對象了自然不能給人參考
: 一直到輸入以下指令, 才成功編譯出a.out
: gcc -static test.c -L/mnt/test/libusb-1.0.9/install -lusb-1.0 -lpthread -lrt
: 這裡有三個疑問:
: 首先這裡為何要使用 -static?
: 是否官網的壓縮檔沒有包含完整的東西, 以後我要下載其他組件或函式庫, 都要這樣
: 東拉拉西拉拉嗎?
: 感覺這樣我的函式庫最後不是會很亂很不利嗎?
: 最後一個問題我自己再上網學一下, 就是為啥人家一眼就看到那些找不到的參考對象就知
: 道要 -lpthread 跟 -lrt?
: 好像是利用objdump去找
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.125.239.51
※ 編輯: descent 來自: 59.125.239.51 (04/02 10:51)