Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OSX:C脚本可编译,但I';我有一个链接错误_C_Gcc_Terminal_Linker - Fatal编程技术网

OSX:C脚本可编译,但I';我有一个链接错误

OSX:C脚本可编译,但I';我有一个链接错误,c,gcc,terminal,linker,C,Gcc,Terminal,Linker,我在编译两个C脚本时遇到问题。我已经下载了这些文件,它们是一组示例,应该允许我与LabJack接口。目前我的目录中有u3.h、u3.c和lj.c(代码如下所示)。u3.h和u3.c文件很长,因此我发现不适合显示整个内容 相反,我想展示c文件中包含的内容,因为我认为这是我误解的地方 #include "u3.h" #include <stdlib.h> 我遇到的错误是当我尝试链接终端中的文件时,尽管每个文件都是单独编译的。在我使用的终端 $ gcc lj.c u3.c -o test

我在编译两个C脚本时遇到问题。我已经下载了这些文件,它们是一组示例,应该允许我与LabJack接口。目前我的目录中有
u3.h
u3.c
lj.c
(代码如下所示)。
u3.h
u3.c
文件很长,因此我发现不适合显示整个内容

相反,我想展示
c
文件中包含的内容,因为我认为这是我误解的地方

#include "u3.h"
#include <stdlib.h>
我遇到的错误是当我尝试链接终端中的文件时,尽管每个文件都是单独编译的。在我使用的终端

$ 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)

我不确定问题出在哪里,我在网上查过了,但还没有找到任何我能理解并尝试实施的解决方案

您需要链接到实际的LabJack库。此库的源文件位于存储库的目录中;或者,您可以在应用程序中包含
labjackusb.c


您还需要针对libusb进行链接。这是一个单独的项目,可以通过以下工具安装在Mac上。

通过搜索架构x86_64的未定义符号,在这里找到的3000多个现有问题和答案中,没有一个能够提供帮助?我以为我已经处理过Labjack库,但似乎我不理解这个问题。duskwuff提供的答案非常有用!我将
labjack.c
文件添加到我的目录中,但是
libusb
仍然出现错误。我以前安装过它,并假设它在我的系统目录中,但可能不是。我刚刚用gcc lj.c u3.c labjackusb.c-o cff_c`pkg config--libs--cflags libusb-1.0`指定了这个库,这似乎是可行的。不知道为什么它不会像其他库那样链接。libusb不是macOS的标准组件,所以必须使用pkg config来链接它是正常的。
$ 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)