2013-11-25 3 views
2

Я пытаюсь собрать следующие libusb фрагмент кода на моем Mac:л.д.: символ (ы) не найдено для архитектуры x86_64 (libusb)

#include <stdio.h> 
#include <stdlib.h> 
#include <libusb.h> 

int main(void) { 
    libusb_device **devices; 
    ssize_t device_count = 0; 

    device_count = libusb_get_device_list(NULL, &devices); 

    printf("%d devices found\n", (int)device_count); 

    return EXIT_SUCCESS; 
} 

Я libusb установлен с помощью Homebrew.

Я получаю следующее сообщение об ошибке во время компиляции:

л.д.: символ (ы) не найдено для архитектуры x86_64

Полный вывод компилятора выглядит следующим образом:

22:28:24 **** Incremental Build of configuration Debug for project libusb **** 
make all 
Building file: ../src/libusb.c 
Invoking: Cross GCC Compiler 
gcc -I/usr/local/Cellar/libusb/1.0.9/include/libusb-1.0/ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/libusb.d" -MT"src/libusb.d" -o "src/libusb.o" "../src/libusb.c" 
Finished building: ../src/libusb.c 

Building target: libusb 
Invoking: Cross GCC Linker 
gcc -o "libusb" ./src/libusb.o 
Undefined symbols for architecture x86_64: 
    "_libusb_get_device_list", referenced from: 
     _main in libusb.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [libusb] Error 1 

22:28:24 Build Finished (took 119ms) 

Я понимаю, что проблема связана с компоновщиком, не находящим библиотеку libusb, не так ли? Как сообщить компилятору, что находится в Eclipse CDT?

enter image description here

+2

Да, как-то вам нужно добавить -lusb к вашей команде ссылки. Возможно, также -L переключиться, чтобы сказать, где найти libusb. Я не использую затмение, поэтому я не могу сказать вам, как это сделать. Просто комментарий: это немного запутывает, что ваш .c файл называется «libusb». Проект, который использует libusb, обычно не называется «libusb». –

+0

Я согласен с именем проекта, это всего лишь образец. Скорее всего, это будет бит, когда я получу код моей фактической реализации. Я рассмотрю добавление -L и -lusb в Eclipse, по крайней мере, я знаю, чего не хватает в командной строке gcc invocations. –

+0

Команда теперь выглядит так: gcc -o "libusb" ./src/libusb.o -l/usr/local/Cellar/libusb/1.0.9/lib/libusb-1.0.dylib, поскольку я добавил libusb- 1.0.dylib для конфигурации Eclipse CDT. Теперь получение: ld: библиотека не найдена для -l/usr/local/Cellar/libusb/1.0.9/lib/libusb-1.0.dylib –

ответ

2

Как мы работали во всех комментариях команда ссылку, которая работала в

gcc -L/usr/local/Cellar/libusb/1.0.9/lib -o "libusb_example" ./src/libusb_example.o -lusb1.0 
+0

Большое спасибо Чарли! The -lusb1.0 - это то место, где я ошибся. –

Смежные вопросы