交叉编译函数进不去
Ⅰ C++编译失败报错很奇怪,没说错误在哪儿,怎么解决源代码和报错信息如下。
这个是linux下面的c++编译对吗,它跟挂载属性inode64有关系。比较老的交叉编译器,只支持32位inode的文件访问,当遇到超过4294967295的文件,就会编译出错并提示:Value too large for defined data type。
那么解决方案就有两种:
Ø 升级交叉编译器版本,让其支持inode64的源文件。
Ø 交叉编译器版本不变,将文件系统挂载属性从inode64改为inode32。
Ⅱ 交叉编译freetype的时候出现问题了,在线求助
开发平台:Ubuntu11.04
编 译器:arm-gcc-4.1.1.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3821111上下载)
FreeType源码包:freetype.tar.bz2 (可从http://download.csdn.net/detail/npy_lp/3826870上下载)
FreeType是一个用C语言实现的字判纯核体栅格化引擎制作的函数库。它可以用来将字符栅格化裤森并映射成位图以及提供其他字体相关业务的支持。掘掘它支持各种字体格式,包括TrueType、Type 1以及OpenType等。
交叉编译freetype-2.3.2.tar.bz2:
[cpp] view plain
$ tar jvxf freetype-2.3.2.tar.bz2
$ cd freetype-2.3.2/
$ ./configure CC=arm-linux-gnu-gcc --host=arm-linux –prefix=$PWD/_install
$ make && make install
FreeType 1是一个去掉了苹果和微软原始痕迹的清洁版。
交叉编译freetype-1.3.1.tar.gz:
[cpp] view plain
$ tar zvxf freetype-1.3.1.tar.gz
$ cd freetype-1.3.1/
$ ./configure --host=arm-linux --enable-static --prefix=$PWD/_install
然后修改config.cache文件其中的三个值为:
[cpp] view plain
ac_cv_path_LD=${ac_cv_path_LD=arm-linux-gnu-ld}
ac_cv_prog_CC=${ac_cv_prog_CC=arm-linux-gnu-gcc}
ac_cv_prog_CPP=${ac_cv_prog_CPP='arm-linux-gnu-gcc -E'}
修改好后再配置configure一次。
[cpp] view plain
$ ./configure --host=arm-linux --enable-static --prefix=$PWD/_install
修改产生的Makefile文件,以跳过编译test目录。去掉“all:”后的变量“tttest”,以及注释掉“install:”下的第二行:“cd $(FTTESTDIR); $(MAKE) –f$(MAKEFILE) install”。最后执行make && make install命令编译和安装。
[cpp] view plain
$ make && make install
交叉编译最新版本的FreeType库freetype-2.4.8.tar.bz2(可从官网http://www.freetype.org/上下载):
[cpp] view plain
$ tar jvxf freetype-2.4.8.tar.bz2
$ cd freetype-2.4.8/
$ ./configure CC=arm-linux-gnu-gcc --host=arm-linux --prefix=$PWD/_install
$ make && make install
Ⅲ 关于Mac上交叉编译几个小问题,求解答
我是打算编译给模拟器脊喊悔用的库喔。sysroot设置成simulator.platform相应的目录了。但是还渗大是出樱正现clang: warning: using sysroot for 'iPhoneSimulator' but targeting 'MacOSX'。虽然是warning但是不知道有没影响。
Ⅳ 交叉编译时提示 对'__C_ctype_b'的未定义引用
出现这种情况的原因,主要是C/C++编译为obj文件的时候并不旅卖需要函数的具体实现,只要有函数的原型即可。但是在链接为可执行文件的时候就必须要具体的实现了。如果错误是未声明的引用,那就是找不到函数的原型,解决办法这里就不细致说了,通常是相关的头文件未包含。
解决办法
指定原因就好办了,既然知道是缺少了函数的喊昌具体实现,那么就给它这个函数的实现就好了。比如上面的例子,是因为缺失了dlopen、dlsym、dlerror、dlclose这些函数的实现,这几个函数是用于加载动态链接库的,编译的时候需要添加-ldl来使用dl库(这是静态库,在系统目录下/usr/lib/i386-linux-gnu/libdl.a、/usr/lib/x86_64-linux-gnu/libdl.a)。
但是看上面编译的时候是有添加-ldl选项的,那么为什么不行呢?
gcc 依赖顺序问题
这个主要的原因是gcc编译的时候,各个文件依赖顺序的问题。
在gcc编译的时候,如果文件a依赖于文件b,那么编译的时候必须把a放前面,b放后面。
例如:在main.c中使用了pthread库相关函数,那么编译的时候必须是main.c在前,-lpthread在后。gcc main.c -lpthread -o a.out。
上面拆渗逗出现问题的原因就是引入库的顺序在前面了,将其放置在后面即可了。
g++ -o spider bloomfilter.o confparser.o crc32.o dso.o hashs.o md5.o qstring.o sha1.o socket.o spider.o threads.o url.o -rdynamic -lpthread -levent -lcrypt -ldl
Ⅳ 如何解决在交叉编译的问题的crt0.o
如何添加ctr0.o?我得到这个错误:
yagarto-4.7.2/bin/arm-none-eabi-ld: cannot find crt0.o: No such file or directory
collect2: error: ld returned 1 exit status`
离这里很简单的程序:
/* -- first.s */
/* This is a comment */
.global main /* 'main' is our entry point and must be global */
.func main /* 'main' is a function */
main: /* This is main */
mov r0, #2 /* Put a 2 inside the register r0 */
bx lr /* Return from main */
我看这2个线程,并没有得到任何完整的和直截了当的回答: 什么是从背后取下gcc4.7.x的crt0.o的理由? 我有这些文件,什么是CRT0和外箱之间的区别不就可以了?
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/crtbegin.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/crtend.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/crti.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/crtn.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/crtbegin.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/crtend.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/crti.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/crtn.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v6m/crtbegin.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v6m/crtend.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v6m/crti.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v6m/crtn.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v7m/crtbegin.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v7m/crtend.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v7m/crti.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v7m/crtn.o
在SO解决方案给周围的工作不工作了:
arm-none-eabi-gcc -o first assembler_tutorial/chapter01/first.o -nostartfiles
./yagarto-4.7.2/bin/arm-none-eabi-ld: warning: cannot find entry symbol _start; defaulting to 0000000000008000
本文地址 :CodeGo.net/603832/
-------------------------------------------------------------------------------------------------------------------------
1. vectors.s
.globl _start
_start:
mov sp,#0x8000
bl main
hang: b hang
main.s
.globl main
main:
mov r0,#2
bx lr
MEMMAP(链接脚本)
MEMORY
{
ram : ORIGIN = 0x8000, LENGTH = 0x10000
}
SECTIONS
{
.text : { *(.text*) } > ram
.bss : { *(.bss*) } > ram
}
命令
arm-none-eabi-as vectors.s -o vectors.o
arm-none-eabi-as main.s -o main.o
arm-none-eabi-ld vectors.o main.o -T memmap -o main.elf
arm-none-eabi-objmp -D main.elf > main.list
arm-none-eabi-obj main.elf -O binary main.bin
结果
main.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: e3a0d902 mov sp, #32768 ; 0x8000
8004: eb000000 bl 800c <main>
00008008 <hang>:
8008: eafffffe b 8008 <hang>
0000800c <main>:
800c: e3a00002 mov r0, #2
8010: e12fff1e bx lr
如果你想,而不是ASM主C,则 main.c中
int main ( void )
{
return(2);
}
命令
arm-none-eabi-as vectors.s -o vectors.o
arm-none-eabi-gcc -Wall -Werror -O2 -nostdlib -nostartfiles -ffreestanding -c main.c -o main.o
arm-none-eabi-ld vectors.o main.o -T memmap -o main.elf
arm-none-eabi-objmp -D main.elf > main.list
arm-none-eabi-obj main.elf -O binary main.bin
结果
main.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: e3a0d902 mov sp, #32768 ; 0x8000
8004: eb000000 bl 800c <main>
00008008 <hang>:
8008: eafffffe b 8008 <hang>
0000800c <main>:
800c: e3a00002 mov r0, #2
8010: e12fff1e bx lr
我更喜欢其他的函数不是主要的编译器添加额外的行李,当他们看到那个函数 vectors.s
.globl _start
_start:
mov sp,#0x8000
bl notmain
hang: b hang
main.c中
int notmain ( void )
{
return(2);
}
结果
main.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: e3a0d902 mov sp, #32768 ; 0x8000
8004: eb000000 bl 800c <notmain>
00008008 <hang>:
8008: eafffffe b 8008 <hang>
0000800c <notmain>:
800c: e3a00002 mov r0, #2
8010: e12fff1e bx lr
Ⅵ 服务器登录失败,无法执行函数进不去桌面
1、重新亮旦启动计算机,并在开机时按F8,之后选择腊键誉“安全模式”或者“带轮段网络的安全模式”进入系统。
2、进入系统安全模式后,按Win+R打开“运行”窗口,输入regedit并回车以打开注册表编辑器执行函数进入桌面。
Ⅶ qt交叉编译后不显示窗口
qt交叉编译后不显示窗口是因为误将类成员函数名称命名为show。程序在执行到w.show()之后,编译器将成员函数看作show函数的重载,因此不再调用默认的show函数导致窗体无法显示。
Ⅷ 【高分】c程序 交叉编译完成之后运行出现can't handle reloc type 0x13怎么解决
不能处理的类型,贴代码吧,估计你写的类或者函数出问题了