编译cgo包时,go build找不到我的C标准库

菲亚特

我正在尝试在树莓派中编译go项目。

该项目有5个文件,两个小.c文件和与之对应的文件.h(其中一个是我的代码-它调用另一个文件,这是一个base64库)和一个使用.go调用我的.c代码文件cgo

当我gcc仅在树莓派上编译我的C代码(包括其调用和所有内容)时,它无需任何配置即可很好地工作。

当我使用编译x86Linux Ubuntu机器上的整个go项目go build,它也做得很好。

但是,当我尝试go build在树莓派pi中编译go项目时,并没有得到我的C库:

fiatjaf@raspberrypi ~/g/s/b/f/project> go build -x
WORK=/tmp/go-build702187084
mkdir -p $WORK/bitbucket.org/fiatjaf/project/_obj/
cd /home/fiatjaf/go/src/bitbucket.org/fiatjaf/project
/usr/lib/go/pkg/tool/linux_arm/5c -FVw -I $WORK/bitbucket.org/fiatjaf/project/_obj/ -I /usr/lib/go/pkg/linux_arm -o $WORK/bitbucket.org/fiatjaf/project/_obj/base64.5 -DGOOS_linux -DGOARCH_arm ./base64.c
# bitbucket.org/fiatjaf/project
./base64.c:2 5c: No such file or directory: math.h

(如果我也把问题放在<stdlib.h>前面<math.h>,那么问题也不是因为缺少math.h),我试图:

  • 添加// #cgo CFLAGS: -I/usr/include.go文件
  • 添加// #cgo LDFLAGS: -I/usr/include(我无法发现这些标志的正确用法是什么)
  • 使用 go build -ldflags '-I/usr/include'

我不明白为什么go会尝试使用编译base64.c -I /usr/lib/go/pkg/linux_arm真的不行 有人帮忙。

编辑:关于项目结构的澄清说明:

它有5个文件,即2 C(及其对应的H):

base64.c

#include <math.h>
#include <stdint.h>
#include <stdlib.h>
... // definitions of functions used at project.c

工程

#include <stdlib.h>
#include <string.h>
#include "base64.h"
... // functions used at project.go

和1 Go:

...

// #include <stdlib.h>
// #include <string.h>
// #include "project.h"
// #cgo CFLAGS: -I/usr/include
// #cgo LDFLAGS: -lm
import "C"
...

为了使此功能生效,我应该在哪里,什么位置以及如何更改此声明?为何它在我的x86 linux上有效?

菲亚特

看来我的问题与未设置CGO_ENABLED标志有关

我不确定,但是似乎是这样,因为我从Raspbian存储库中卸载了Go(默认情况下似乎禁用了CGO)并从源代码安装了Go(就像我在x86 Linux中所做的那样),开始工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么编译器找不到我的方法?

来自分类Dev

代码块找不到我的编译器

来自分类Dev

anaconda找不到我已经安装的软件包

来自分类Dev

Python找不到我的软件包:

来自分类Dev

在 OSX 上编译 C++ 时找不到库

来自分类Dev

在执行计数器时找不到我的错误

来自分类Dev

在执行计数器时找不到我的错误

来自分类Dev

Laravel Mailable在包中开发时找不到我的别名视图

来自分类Dev

编译Vim时找不到终端库

来自分类Dev

编译Vim时找不到终端库

来自分类Dev

如果移到Spring Boot应用程序的另一个软件包中,为什么找不到我的Spring Data存储库?

来自分类Dev

我试图在单击时将JPanel添加到我的JFrame中,但是我找不到我的错误

来自分类Dev

Visual C ++-找不到我的静态库的标头

来自分类Dev

通过朋友的WiFi通过VPN连接到我家的网络时,找不到我的设备

来自分类Dev

Vim初学者:编译并关闭程序后找不到我的源文件

来自分类Dev

编译器找不到我作为Maven依赖项的类

来自分类Dev

Anaconda找不到我的安装了`pip`的软件包

来自分类Dev

Heroku pip在pypi中找不到我最近发布的软件包

来自分类Dev

编译C程序时找不到共享库

来自分类Dev

将Maven依赖项添加到我的Maven项目时找不到资源

来自分类Dev

拆分为单独的文件时,Angular找不到我的控制器

来自分类Dev

为什么在同时使用npm时找不到我的命令

来自分类Dev

在使用反引号转义字符串时找不到我的错误

来自分类Dev

Heroku在部署时找不到我的文件,但可以在本地使用

来自分类Dev

尝试在Google Play控制台中创建付款资料时找不到我的国家

来自分类Dev

为什么`find`有时会找到我的文件,有时却找不到

来自分类Dev

尝试安装Ubuntu Touch时adb找不到我的设备

来自分类Dev

安装自定义c ++库时出现“找不到包'gsl'的情况”

来自分类Dev

使用编译vlfeat库时找不到-lvl

Related 相关文章

  1. 1

    为什么编译器找不到我的方法?

  2. 2

    代码块找不到我的编译器

  3. 3

    anaconda找不到我已经安装的软件包

  4. 4

    Python找不到我的软件包:

  5. 5

    在 OSX 上编译 C++ 时找不到库

  6. 6

    在执行计数器时找不到我的错误

  7. 7

    在执行计数器时找不到我的错误

  8. 8

    Laravel Mailable在包中开发时找不到我的别名视图

  9. 9

    编译Vim时找不到终端库

  10. 10

    编译Vim时找不到终端库

  11. 11

    如果移到Spring Boot应用程序的另一个软件包中,为什么找不到我的Spring Data存储库?

  12. 12

    我试图在单击时将JPanel添加到我的JFrame中,但是我找不到我的错误

  13. 13

    Visual C ++-找不到我的静态库的标头

  14. 14

    通过朋友的WiFi通过VPN连接到我家的网络时,找不到我的设备

  15. 15

    Vim初学者:编译并关闭程序后找不到我的源文件

  16. 16

    编译器找不到我作为Maven依赖项的类

  17. 17

    Anaconda找不到我的安装了`pip`的软件包

  18. 18

    Heroku pip在pypi中找不到我最近发布的软件包

  19. 19

    编译C程序时找不到共享库

  20. 20

    将Maven依赖项添加到我的Maven项目时找不到资源

  21. 21

    拆分为单独的文件时,Angular找不到我的控制器

  22. 22

    为什么在同时使用npm时找不到我的命令

  23. 23

    在使用反引号转义字符串时找不到我的错误

  24. 24

    Heroku在部署时找不到我的文件,但可以在本地使用

  25. 25

    尝试在Google Play控制台中创建付款资料时找不到我的国家

  26. 26

    为什么`find`有时会找到我的文件,有时却找不到

  27. 27

    尝试安装Ubuntu Touch时adb找不到我的设备

  28. 28

    安装自定义c ++库时出现“找不到包'gsl'的情况”

  29. 29

    使用编译vlfeat库时找不到-lvl

热门标签

归档