极术小姐姐 · 2019年12月19日

Linux应用程序的C ++库在哪里?

我有一个ARM DS-5工具随附的Altera Cyclone V SoC DevKit。我一直在运行工具附带的Hello World C linux应用示例。我想运行一个类似的C ++ linux应用程序示例,因此我复制了C示例项目(就像我之前几次),但是这次将main.c文件重命名为main.cpp。一切编译正常。然后我添加了#include <iostreams>,构建中断了。

配置的构建项目helloCpp的默认值

全部制作

如果不存在,则剥离mkdir剥离

arm-linux-gnueabihf-gcc main.o -o hellocpp -marm -march = armv4t -mfloat-abi = soft

main.o:在函数__static_initialization_and_destruction_0中:

c:\ altera \ 13.1 \ embedded \ ds-5 \ sw \ gcc \ bin \ ../ lib / gcc / arm-linux-gnueabihf / 4.7.3 /../../../../ arm- linux-gnueabihf / include / c ++ / 4.7.3 / iostream:75:对`std :: ios_base :: Init :: Init()'的未定义引用

main.o:在函数_GLOBAL__sub_I_main中:

C:\ Dev \ DS-5 Workspace \ helloCpp / main.cpp:23:对`std :: ios_base :: Init ::〜Init()'的未定义引用

collect2.exe:错误:ld返回1退出状态

make:* [hellocpp]错误1

构建完成

我已经附加了main.cpp和makefile。我将makefile硬连接到main.o目标,并禁用了$(OBJS)目标,以强制使用C ++编译器。否则,makefile是我在\ hello示例项目中找到的文件。

我的第一个怀疑是存在#include路径问题。我已经添加了我在\ gnometris项目中找到的所有#include路径,这是我可以找到的唯一C ++示例项目。是否有一个失踪者?

第二个怀疑是库路径问题。但是,我注意到\ gnometris项目未指定任何库。为此应包括哪些库?

第三(实际上是最强烈的怀疑)makefile出了点问题。是否有一个简单的C ++示例项目可以与Cyclone V DS-5工具一起编译?

1 个回答 得票排序 · 时间排序
棋子 · 2019年12月19日

Makefile的问题,更具体地说,是将main.o编译为hellocpp的方式

这与ARM DS5无关,因为您正在使用其中的GCC工具链。

问题在这里:

arm-linux-gnueabihf-gcc main.o -o hellocpp -marm -march = armv4t -mfloat-abi = soft

代替

arm-linux-gnueabihf-c ++ / g ++ main.o -o hellocpp -marm -march = armv4t -mfloat-abi = soft

将工作。

更改Makefile:

$(目标):$(OBJS)

    $(呼叫MD,$(STRIPPED_DIR))

    $(CC)$(OBJS)-o $(TARGET)$(ABI)

    $(STRIP_APP)$(目标)-o $(STRIPPED_DIR)/ $(目标)

$(目标):$(OBJS)

    $(呼叫MD,$(STRIPPED_DIR))

    $(CPP)$(OBJS)-o $(TARGET)$(ABI)

    $(STRIP_APP)$(目标)-o $(STRIPPED_DIR)/ $(目标)
你的回答