gpt4 book ai didi

c++ - 为树莓派标准错误交叉编译 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:22:05 25 4
gpt4 key购买 nike

我需要为 Raspberry Pi (armV6) 交叉编译 C/C++ 代码。我按照 http://hertaville.com/2012/09/28/development-environment-raspberry-pi-cross-compiler/ 上的说明进行操作并且我在我的主机 (Ubuntu 14.04) 上构建了工作。

所以我的项目在对所需的库有些恼火之后构建在我的主机上,我很高兴。但是当我把程序转移到我的树莓派上时,我得到了以下错误:

{ProjectName}: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by {ProjectName})
{ProjectName}: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.19' not found (required by {ProjectName})

所以我怀疑交叉编译器正在使用我主机的 libstd++.so 而不是交叉编译器的一部分,但我不知道如何修复它。

我正在使用 gcc-linaro-arm-linux-gnueabihf-raspbian/arm-linux-gnueabihf-g++ 交叉编译器。

我尝试运行的程序是由其他人直接在 pi 上编写的,在那里它可以完美地构建、编译和运行。

我的 makefile 看起来像这样:

CC=arm-linux-gnueabihf-g++
IFLAGS=-pthread -I./headers -lwiringPi -lortp -llinphone
LIBB = -I/home/david/rpi/rootfs/usr/lib/arm-linux-gnueabihf/
CFLAGS=-Wall -std=c++0x
LDFLAGS=-Wall
SOURCES=$(wildcard src/*cpp)
OBJECTS=$(addprefix obj/,$(notdir $(SOURCES:.cpp=.o)))
EXECUTABLE=bin/wackytalky

all: $(SOURCES) LINK_EXEC

debug: CFLAGS += -g
debug: $(SOURCES) LINK_EXEC

LINK_EXEC: $(OBJECTS)
$(CC) $(LDFLAGS) -o $(EXECUTABLE) $^ $(LIBB) $(IFLAGS)

obj/%.o: src/%.cpp
$(CC) $(CFLAGS) -o $@ -c $< $(IFLAGS)

clean:
rm $(EXECUTABLE) obj/*.o

最佳答案

我昨天遇到了和你一样的问题(完全一样)。我还没有时间在 Pi 方面跟进,所以我只是修改了我的交叉编译选项(我使用 eclipse)并添加了 -static-libstdc++ 到链接器命令。这静态链接到 Ubuntu 端的代码中,因此 Pi 端的 .so 问题永远不会出现。

显然,它会产生更大的可执行文件。

关于c++ - 为树莓派标准错误交叉编译 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24605718/

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