QT错误之——collect2:ld returned 1 exit status

pcDuino3下支持mmc启动,官方的Uboot是采用SPL框架实现的,因为内部的SRAM空间达到32K,我们完全可以在这32K空间内编写一个完整可用小巧的bootloader来完成引导Linux kernel的目的。

我们首先介绍下SPL框架,可以先看下《GNU ARM汇编--(十八)u-boot-采用nand_spl方式的启动方法》《GNU
ARM汇编--(十九)u-boot-nand-spl启动过程分析》
,NAND_SPL也算是SPL框架下的一种模式。

当使用Nand flash或者MMC作为引导方式时,我们需要使用芯片内的ROM或者其它机制加载固件到SRAM中。

这种时候就需要SPL,因为SPL短小精悍,适用于4K甚至更小的SRAM的环境。这时候的引导过程就变成,SPL引导Uboot,而由Uboot引导系统内核。

其实作为pcDuino3的SPL,它是可以完成直接引导kernel功能的,如果不需要使用uboot提供的额外的强大功能的话。

这里介绍下写bootloader的思路:

使用mmc的read驱动函数将指定位置的kernel镜像读取到内存中,然后按照Linux的要求完成参数列表的传递,MMU和cache的配置等,就可以完成跳转动作了。

最后一个步骤的代码如下:

void boot_linux(void)
{
	uart_printf("boot linux\n");
	void (*kernel_entry)(int zero, int arch, uint params);
	unsigned long r2;
	unsigned long machid;

	setup_linux_param(0x40000000 + 0x100);

	cleanup_before_linux();
	kernel_entry = (void (*)(int, int, uint))0x48000000;

	machid = 4283;
	r2= 0x40000100;
	kernel_entry(0, machid, r2);

}

这个函数就完成了内核文档Documentation/arm/booting对booting ARM Linux的描述。

这样,一个仅仅有18K大小的bootloader就可以完成对kernel的引导了。

QT错误之——collect2:ld returned 1 exit status,布布扣,bubuko.com

时间: 2024-10-11 13:15:42

QT错误之——collect2:ld returned 1 exit status的相关文章

编译ipvsadm-1.26 错误:collect2: ld returned 1 exit status

编译: ipvsadm-1.26 编译错误问题 [[email protected] ipvsadm-1.26]# make make -C libipvs make[1]: Entering directory `/root/ipvsadm-1.26/libipvs' gcc -Wall -Wunused -Wstrict-prototypes -g -fPIC -DLIBIPVS_USE_NL  -DHAVE_NET_IP_VS_H -c -o libipvs.o libipvs.c gcc

Dev C++ Permission denied collect2: ld returned 1 exit status 编译错误

Dev-C++  version:5.3.0.3 编译错误:Permission denied collect2: ld returned 1 exit status 原      因:1.编译的时候按F9,默认在同目录下生成exe,会产生这种错的原因是,之前已经编译过一次,存在一个相同名称的exe.其实,你仔                 细观察一下,当按下F9提示编译错误(此时存在这个相同名称的exe)时,虽然不会编译成功生成心得exe,但是等几秒,它会删除 原来的存在同名exe.所以,如

undefined reference to `pthread_create' collect2: ld returned 1 exit status

Linux下编译多线程程序遇到错误: undefined reference to `pthread_create' collect2: ld returned 1 exit status 原因是系统无法找到pthread_create函数.也就是说编译器在link得时候找不到其中的一个使用库的函数. 解决办法如下: For Linux the correct command is: gcc -pthread xxx.c In general, libraries should follow s

/usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status make: *** [sapi/cgi/php-cgi] Err

/usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status make: *** [sapi/cgi/php-cgi] Error 1 解决的方法: yum install *ltdl*

Error:collect2:ld returned 1 exit status (总结)

1. 编译成功的例子在后台执行,有时一闪而过,如果再次build ,则会提示上述错误. 解决方法:打开任务管理器,找到相应的exe进程,关闭即可:  或者直接关闭IDE. 2.没有编译成功的情况下,最常见情况是程序本身需要include的头文件被遗漏了 解决方法:细心查找基类所用的头文件,include之后即可. 3..h文件中相关的函数在cpp文件中没有定义,或者说函数的声明(.h中)与定义(.cpp中)不一致 解决方法:查找遗漏的函数,根据需要,具体的定义.将函数名修改一致.

ld returned 1 exit status"的解决办法

在Linux下创建线程时,编译时会出现下面的错误,[[email protected] 807]# gcc -o 22 22.c/tmp/cc21HcoW.o(.text+0x4c): In function `main':: undefined reference to `pthread_create'collect2: ld returned 1 exit status程序为: #include <unistd.h>#include <pthread.h>#include &l

gcc/g++ 编译时出现:“对’xxxx’未定义的引用,collect2: error: ld returned 1 exit status” 的错误

出现的问题: 在使用 make 编译实现一个程序时,出现了下面的错误.查看程序源文件所在的目录时发现程序已经完成了编译,并生成了 list_repo.o 的文件,说明是在程序链接生成可执行文件时发生了问题. storages/local.o:在函数‘LocalStorage::init(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >,

QT编译出现ld.exe: cannot open output file debug\nh_03testCallPy.exe: Permission denied collect2.exe: error: ld returned 1 exit status

D:/Qt/Qt5.9.0/Tools/mingw530_32/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot open output file debug\nh_03testCallPy.exe: Permission denied collect2.exe: error: ld returned 1 exit status 原因目前可能有如下: 1.程序已经在运行,进入

自定义库引用时编译出错“collect2: error: ld returned 1 exit status”

想必很多人都遇到过这样的事情,需要写一个共享库,这个库又不能让所有的人都了解里面是怎么实现的,所以只能提供一个库出来供项目使用,可能是处于保密.核心业务的需要,这些都能够理解.笔者也写了一个简单的东西测试了一下,里面还是有不少东西. "collect2: error: ld returned 1 exit status"首先就遇到了这个问题.查了一下,这种错误网上说法也一大堆,起作用的还不多.在android系统里面加的共享库,需要加"namespace android &q