打印
[ARM入门]

基于ARM的C++编程的疑问

[复制链接]
652|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Spirit\|  楼主 | 2014-12-12 21:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Spirit\ 于 2014-12-12 21:25 编辑

本人新手,在WINDOWS下编程已经习惯C++的概念,尝试基于ARM的编程过程中遇到问题。
同样的C++代码,全部放在一个CPP文件里编译链接都没有问题,但分成两个CPP文件后链接时报错。提示信息如下:

arm-linux-g++ -o led.o led.cpp -c
arm-linux-g++ -o main.o main.cpp -c
arm-linux-ld -Ttext 0x0 -o led_icache.elf start.o led.o main.o
main.o: In function `main':
main.cpp: (.text+0x140): undefined reference to `__cxa_end_cleanup'
main.cpp: (.text+0x168): undefined reference to `__cxa_end_cleanup'
main.o: (.ARM.extab+0x0): undefined reference to `__gxx_personality_v0'
main.o: (.eh_frame+0x43): undefined reference to `__gxx_personality_v0'
make: *** [led_icache.bin] 错误 1

下面列出相关代码,一个头文件,两个CPP文件,一个MAKEFILE
led.h:
class LED
{
public:
     LED(int port);
     ~LED();
     void On();
     void Off();
private:
     int mPort;
};

led.cpp:
#include "led.h"
#define  GPJ2CON  (*(volatile unsigned long *) 0xE0200280)
#define  GPJ2DAT  (*(volatile unsigned long *) 0xE0200284)

LED:: LED(int port)
{
mPort = port;
GPJ2CON |= (1 << (mPort * 4));// ÅäÖÃÒýœÅ
}

LED::~LED()
{};

void LED::On()
{
GPJ2DAT &= ~(1<<mPort);
}

void LED::Off()
{
GPJ2DAT |= (1<<mPort);
}
maiin.cpp:
#include "led.h"

void delay(unsigned long count)
{
volatile unsigned long i = count;
while (i--);
}

int main()
{
LED led[4] = {LED(0),LED(1),LED(2),LED(3)};
int i=3;

while(1)
{
  led.Off();
  i++;
  i=i%4;
  led.On();
  delay(0x1000000);
}
return 0;
}
makefile:
led_icache.bin: start.o led.o main.o
arm-linux-ld -Ttext 0x0 -o led_icache.elf $^
arm-linux-objcopy -O binary led_icache.elf led_icache.bin
arm-linux-objdump -D led_icache.elf > led_icache_elf.dis
%.o : %.S
arm-linux-gcc -o $@ $< -c

%.o : %.cpp
arm-linux-g++ -o $@ $< -c

clean:
rm *.o *.elf *.bin *.dis mkmini210 -f

如果我把led.h和led.cpp中的内容全部复制到main.cpp文件中则没有任何问题。生成的BIN文件700多字节
后来尝试把makefile中的ld命令中加入参数“-lstdc++”,
然后再次编译链接成功。但是,生成的BIN文件36K,大了许多。猜测链接过程中将stdc++库也加入了其中。所以觉得加这个参数应该不是正确的解决方法。

以上,请各位前辈多多赐教!

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝