當前位置:首頁 » 編程軟體 » 交叉編譯函數進不去

交叉編譯函數進不去

發布時間: 2023-04-08 06:56:41

Ⅰ 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怎麼解決

不能處理的類型,貼代碼吧,估計你寫的類或者函數出問題了

熱點內容
安裝flexlinux 發布:2025-07-15 16:35:47 瀏覽:372
網站模板php 發布:2025-07-15 16:22:47 瀏覽:248
編譯簡譜 發布:2025-07-15 16:16:37 瀏覽:813
編程口是什麼 發布:2025-07-15 16:11:28 瀏覽:497
微博如何從賬號和密碼登錄 發布:2025-07-15 15:59:02 瀏覽:123
解說電影需要哪些硬體配置 發布:2025-07-15 15:56:59 瀏覽:380
ftp快捷鍵搜索文件 發布:2025-07-15 15:51:44 瀏覽:459
蘋果賬號密碼忘了怎麼注銷 發布:2025-07-15 15:30:50 瀏覽:200
自動閱讀掛機腳本 發布:2025-07-15 15:20:18 瀏覽:848
開票人的許可權配置如何選擇 發布:2025-07-15 14:51:22 瀏覽:131