gpt4 book ai didi

c - 在 RPI 交叉编译器上链接 libwiringPi

转载 作者:太空宇宙 更新时间:2023-11-04 00:02:45 25 4
gpt4 key购买 nike

我有一个 RPI 3 模型 B,我想编译一个小程序来与设备的 SPI 交互。我正在我的 Linux 桌面上编写程序,所以我想交叉编译该程序。
为此,我从这里安装了交叉编译器:https://github.com/raspberrypi/tools
我正在使用 witingPi 库,所以我按照以下说明进行安装:http://wiringpi.com/download-and-install/
我正在编写的程序是网络上的示例之一(只是为了确保我可以编译并运行它):

#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#include <wiringPiSPI.h>

#define CHANNEL 1

void send3(uint8_t a, uint8_t b, uint8_t c) {
uint8_t buf[3];

buf[0] = a;
buf[1] = b;
buf[2] = c;
wiringPiSPIDataRW(CHANNEL, buf, 3);
}

int main(int argc, char** argv) {
if (wiringPiSPISetup(CHANNEL, 4000000) < 0) {
fprintf (stderr, "SPI Setup failed: %s\n", strerror (errno));
exit(errno);
}

printf("start\n");
send3(0x40, 0x0A, 0x0B);
send3(0x41, 0x0A, 0x00);
send3(0x40, 0x00, 0xFF);
send3(0x40, 0x0C, 0xFF);
send3(0x40, 0x13, 0x00);
send3(0x40, 0x01, 0x00);
send3(0x40, 0x04, 0xFF);
printf("done\n");
return 0;
}

问题是我无法让 wiringPi 库的链接部分工作:编译部分运行良好:./arm-linux-gnueabihf-gcc -c/home/guy/main.c -o/home/guy/main.o -I/home/guy/toolchain/wiringPi/wiringPi
其中 /home/guy/toolchain/wiringPi/wiringPi 是 wiringPi 库和 header 的路径。我确信这很有效,因为编译成功(意味着成功访问 wiringPi header )。

接下来,我尝试使用以下命令将代码与 wirinPi 库链接并创建可执行文件:./arm-linux-gnueabihf-gcc -L/home/guy/toolchain/wiringPi/wiringPi -o "AngleCalculator"/home/guy/main.o -lwiringPi

这失败了,我收到以下消息:/home/guy/toolchain/wiringPi/wiringPi/libwiringPi.so: file not recognized: File format not recognized

一些帖子建议在链接期间使用 -static 标志,但它仍然不起作用,我收到以下消息:/home/guy/toolchain/rpi2/tools/arm -bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm- linux-gnueabihf/bin/ld: 找不到 -lwiringPi。我猜这是因为没有 wiringPi 的静态版本。

在 RPI 设备本身上运行相同的链接命令成功。我不知道是什么导致了这个错误。我应该使用另一个版本的 gcc 交叉编译器吗?也许我应该使用另一个版本的 wiringPi?

谢谢

最佳答案

经过进一步调查,我发现这是我的错误:
下载 wiringPi 库时,我已经使用桌面工具链构建了它。这创建了一个 so 文件,当试图将它与 pi 的工具链链接时会导致错误。
我已将 so 文件从 pi 复制到我的桌面,一切正常。

关于c - 在 RPI 交叉编译器上链接 libwiringPi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36517662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com