Tag: 交叉编译

如何使用CMAKE从命令行在Windows上构建x86和/或x64?

使用Visual Studio让cmake在Windows上构建x86的一种方法是这样的: 启动x86的Visual Studio命令提示符 运行cmake: cmake -G “NMake Makefiles” \path_to_source\ NMAKE 使用Visual Studio让cmake在Windows上构建x64的一种方法是这样的: 启动x64的Visual Studio命令提示符 运行cmake: cmake -G “NMake Makefiles” \path_to_source\ NMAKE 使用Cmake,我如何编译其中一个或两个架构? (就像Visual Studio在IDE中的表现一样)

C赋值语句的评估顺序

我遇到过跨平台代码在基本赋值语句中表现不同的情况。 一个编译器首先评估Lvalue,然后评估Rvalue,然后评估分配。 另一个编译器首先执行Rvalue,然后执行Lvalue,然后执行赋值。 如果Lvalue影响Rvalue的值,则可能会产生影响,如下例所示: struct MM { int m; } int helper (struct MM** ppmm ) { (*ppmm) = (struct MM *) malloc (sizeof (struct MM)); (*ppmm)->m = 1000; return 100; } int main() { struct MM mm = {500}; struct MM* pmm = &mm pmm->m = helper(&pmm); printf(” %d %d ” , mm.m , […]

使用clock()来测量执行时间

我正在运行一个使用GCC和专有DSP交叉编译器的C程序来模拟一些function。 我使用以下代码来测量程序特定部分的执行时间: clock_t start,end; printf(“DECODING DATA:\n”); start=clock(); conv3_dec(encoded, decoded,3*length,0); end=clock(); duration = (double)(end – start) / CLOCKS_PER_SEC; printf(“DECODING TIME = %f\n”,duration); 其中conv3_dec()是我的程序中定义的函数,我想找到这个函数的运行时。 现在问题是我的程序运行时, conv3_dec()函数运行了近2个小时,但printf(“DECODING TIME = %f\n”,duration)的输出printf(“DECODING TIME = %f\n”,duration)表示函数的执行只完成了半个第二( DECODING TIME = 0.455443 )。 这对我来说非常困惑。 我之前使用clock_t技术来测量程序的运行时间,但差异从未如此巨大。 这是由交叉编译器引起的吗? 正如旁注所示,模拟器模拟仅以500MHz运行的DSP处理器,因此DSP处理器和CPU的时钟速度差异导致错误正在测量CLOCKS_PER_SEC。

如何交叉编译MIPS?

我有一个类似于Dreambox的DVB接收器( 机顶盒 ),它有MIPS cpu 它嵌入了Linux ,我可以通过telnet连接到它 问题是如何在C中编译简单的“ Hello World ”应用程序? 哪里可以获得工具链 , SDK ?

对于curl程序,获取未定义的引用’clock_gettime’错误

Gretings, 我有交叉编译,OpenSSl,libssh2,最后是cURL,不知道为什么它只生成了静态库。 无论如何,我试图通过链接所有三个库来运行示例ftpget.c程序,但我收到以下错误: …/libcurl.a(timeval.o): In function ‘curlx_tvnow’: timeval.c:(.text+0xfc): undefined reference to ‘clock_gettime’ collect2: ld return 1 exit status make: *** [all] Error 1 请帮我解决这个错误,是否还需要交叉编译其他任何库? 谢谢,Yuvi

在编译时未定义引用`__sync_val_compare_and_swap_4’错误,使用gcc 4.1.1和4.2.0对Sparc v8目标

使用crosstool脚本我在Cygwin下构建了Sparc架构的以下编译器gcc-4.1.1和4.2.0 20061024(预发行版): $ ./sparc-unknown-linux-gnu-gcc -v Using built-in specs. Target: sparc-unknown-linux-gnu Configured with: /crosstool-0.43/build/sparc-unknown-linux-gnu/gcc-4.1.1-glibc-2.3.6/gcc-4.1.1/configure –target=sparc-unknown-linux-gnu –host=i686-host_pc-cygwin –prefix=/opt/crosstool/gcc-4.1.1-glibc-2.3.6/sparc-unknown-linux-gnu –with-headers=/opt/crosstool/gcc-4.1.1-glibc-2.3.6/sparc-unknown-linux-gnu/sparc-unknown-linux-gnu/include –with-local-prefix=/opt/crosstool/gcc-4.1.1-glibc-2.3.6/sparc-unknown-linux-gnu/sparc-unknown-linux-gnu –disable-nls –enable-threads=posix –enable-symvers=gnu –enable-__cxa_atexit –enable-languages=c,c++ –enable-shared –enable-c99 –enable-long-long Thread model: posix gcc version 4.1.1 和 $ ./sparc-unknown-linux-gnu-gcc -v Using built-in specs. Target: sparc-unknown-linux-gnu Configured with: /crosstool-0.43/build/sparc-unknown-linux-gnu/gcc-4.2-20061024- glibc-2.3.6/gcc-4.2-20061024/configure –target=sparc-unknown-linux-gnu –host=i 686-host_pc-cygwin –prefix=/opt/crosstool/gcc-4.2-20061024-glibc-2.3.6/sparc-un known-linux-gnu –with-headers=/opt/crosstool/gcc-4.2-20061024-glibc-2.3.6/sparc -unknown-linux-gnu/sparc-unknown-linux-gnu/include –with-local-prefix=/opt/cros stool/gcc-4.2-20061024-glibc-2.3.6/sparc-unknown-linux-gnu/sparc-unknown-linux-g nu […]

Windows Store应用程序可以使用Mingw构建吗?

有没有办法使用Mingw工具链构建Windowsapp store应用程序? (并最终在Linux上从mingw 交叉编译它们,因为如果它在一个Mingw工具链中工作,它应该在另一个工作链中工作。) 我想一个要求是坚持 使用API​​: Windows Store应用程序沙箱中允许的内容,但在分发到商店之前还需要考虑哪些其他内容? XAML? 32或64位代码? 由于Mingw C ++与MSVC ++没有链接兼容,我认为没有WRL的普通C程序是最简单的实现方法吗?

使用动态库交叉编译C代码时出错

我有两个文件: lib.c #include void hi() { printf(“Hi i’m a library function in lib.so\n”); } 和main.c #include #include /* based on Jeff Scudder’s code */ int main() { void *SharedObjectFile; void (*hi)(); // Load the shared libary; SharedObjectFile = dlopen(“./lib.so”, RTLD_LAZY); // Obtain the address of a function in the shared library. ciao = dlsym(SharedObjectFile, “hi”); […]

分析ELF部分和符号大小的工具

我需要一种方法来分析我的GCC编译器的输出文件。 我正在编制裸机,我非常关心尺寸。 我可以使用交叉编译器提供的arm-none-eabi-objdump ,但如果存在用于此任务的工具,则解析输出不是我想要做的事情。 你知道这样的工具存在吗? 我的搜索没有结果。 还有一件事,我自己的代码中的每个函数都在它自己的部分。

使用Autoconf对ARM进行交叉编译

我无法使用autconf为我的arm板交叉编译库。 我正在使用这一行: ./configure –target=arm-linux –host=arm-linux –prefix=/bla/bla/bla/linux_arm_tool CFLAGS=’-m32′ make make install 当我做file检查时,我得到: libjpeg.so.8.4.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped 这似乎不对,但我还是试着用它……我得到: /usr/lib/gcc/arm-linux-gnueabi/4.5.3/../../../../arm-linux-gnueabi/bin/ld: skipping incompatible /bla/bla/bla/bla/../linux_arm_tool/lib/libjpeg.so when searching for -ljpeg 我很茫然,我一直在谷歌上搜索一小时……