2017-11-28 16 views
1

두 개의 C 스크립트를 컴파일하는 데 문제가 있습니다. 내가 파일을 다운로드했습니다 here, 내가 LabJack와의 인터페이스를 허용 해야하는 예제 세트입니다. 현재 내 디렉토리에 u3.h, u3.clj.c (아래 코드)이 있습니다. u3.hu3.c 파일이 상당히 길어서 전체를 표시하는 것이 부적절한 것으로 나타났습니다.OSX : C 스크립트가 컴파일되지만 링커 오류가 발생했습니다

대신 내가 뭔가를 오해하고있는 부분이라고 생각하여 c 파일에 무엇이 포함되어 있는지 보여주고 싶었습니다.

#include "u3.h" 
#include <stdlib.h> 

그리고 여기에 헤더 파일의 상단에 무엇이다 :

#ifndef U3_H_ 
#define U3_H_ 

#include <sys/time.h> 
#include <stdio.h> 
#include <math.h> 
#include <stdlib.h> 
#include "labjackusb.h" 

파일 lj.c은 다음과 같습니다.

내가 가진 오류는 각 파일을 개별적으로 컴파일하더라도 터미널에서 파일을 링크하려고 할 때 발생합니다. 터미널에서 나는

$ gcc lj.c u3.c -o test 

를 사용하고 난 다음 오류 얻을 :

Undefined symbols for architecture x86_64: 
    "_LJUSB_CloseDevice", referenced from: 
     _openUSBConnection in u3-fab2dd.o 
     _closeUSBConnection in u3-fab2dd.o 
    "_LJUSB_GetDevCount", referenced from: 
     _openUSBConnection in u3-fab2dd.o 
    "_LJUSB_OpenDevice", referenced from: 
     _openUSBConnection in u3-fab2dd.o 
    "_LJUSB_Read", referenced from: 
     _openUSBConnection in u3-fab2dd.o 
     _getCalibrationInfo in u3-fab2dd.o 
     _I2C in u3-fab2dd.o 
     _ehConfigIO in u3-fab2dd.o 
     _ehFeedback in u3-fab2dd.o 
     _ehConfigTimerClock in u3-fab2dd.o 
    "_LJUSB_Write", referenced from: 
     _openUSBConnection in u3-fab2dd.o 
     _getCalibrationInfo in u3-fab2dd.o 
     _I2C in u3-fab2dd.o 
     _ehConfigIO in u3-fab2dd.o 
     _ehFeedback in u3-fab2dd.o 
     _ehConfigTimerClock in u3-fab2dd.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

나는 문제가 무엇인지 확실하지 않다, 그리고 나는 온라인을 검토 한하지만 난 어떤 해결책을 발견하지 않았습니다 이해할 수 있고 실행하려고 노력합니다.

+0

여기에서 3000 개 이상의 기존 질문 및 답변을 찾을 수 없음 * 아키텍처 x86_64 *에 대한 정의되지 않은 기호가 도움이 되었습니까? –

+0

나는 이미 Labjack 라이브러리를 다루었다고 생각했지만 문제를 이해하지 못하는 것 같습니다. duskwuff가 제공 한 대답은 매우 유용했습니다! –

답변

1

실제 LabJack 라이브러리와 연결해야합니다. 이 라이브러리의 소스 파일은 저장소의 liblabjackusb 디렉토리에 있습니다. 또는 응용 프로그램에 labjackusb.c을 포함 할 수 있습니다.

libusb 와도 링크해야합니다. 이 프로젝트는 별도의 프로젝트이며 Homebrew 같은 도구를 통해 Mac에 설치할 수 있습니다.

+0

'labjack.c' 파일을 제 디렉토리에 추가했지만 여전히'libusb'에 오류가 있습니다. 이전에 설치했고 시스템 디렉토리에 있다고 가정했지만 어쩌면 그렇지 않을 수도 있습니다. 방금 라이브러리를'gcc lj.c u3.c labjackusb.c -o cff_c \'pkg-config --libs --cflags libusb-1.0 \''으로 지정했는데 작동하는 것 같았습니다. 왜 그것이 다른 도서관처럼 링크하지 않을 것이라고 확신하지 않습니다. –

+0

libusb는 macOS의 표준 구성 요소가 아니므로 pkg-config를 사용하여 링크해야합니다. – duskwuff