在Mono for ARM上运行简单的winforms应用程序
我目前正在尝试建立一个环境,在这种环境中,我可以使用Visual Studio 2013创建Winform应用程序,然后我想将其放在ARM V7 Beaglebone Black上,并带有一个附带的触摸屏,它们应该在其中运行. 为了这样做,我采用了一个Ubuntu 14.10 AMD64系统,并使用Beaglebone Black的工具链和ScratchBox2创建了跨编译环境. 我通过使用它来编译一些本机测试程序来验证工具链正确工作,它们确实在Ubuntu Machine(带SB2)以及Beaglebone Black上完美运行. . 接下来,我是从源来的单声道,一次为Ubuntu机器,也为Beaglebone Black编译了一次.为此,我主要遵循这篇文章.最后,我有一个目录,其中有一棵完整的单一树,其本机组件已正确编译为手臂.我通过将单声道目录复制到它后,通过在Ubuntu系统上运行sb2 mono -V以及在Beaglebone Black上运行sb2 mono
16 2024-04-13
编程技术问答社区
为arm交叉编译libnftnl的问题
libnftnl对libmnl有一个依赖性,我分别交叉汇编的libmnl.位于/home/badri/arm_libs/mnl ./configure -build = x86_64-pc-linux-gnu -host = aarch664-linux-gnu -enable-static = no-prefix =/home/home/badri/arm_libs/nftnl libmnl_libs =/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/badri/arm_libs/mnl/lib libmnl_cflags =/home/home/badri/arm_libs/mnl/包括ldflags = -l/home/home/badri/arm_libs/mnl/lib/lib = -lmnl-lmnl -lmnl-includeDir =/includede
16 2024-04-09
编程技术问答社区
为arm交叉编译glibc,在一些unwind函数中得到了未定义的引用
现在,我需要为我们的ARMV7 SOC平台构建Glic-2.15.我遵循以下步骤来构建它: 从mkdir build-glibc cd build-glibc echo "CFLAGS += -D__ARM_ARCH_7__ -D__LINUX_ARM_ARCH__=7 -march=armv7 -U_FORTIFY_SOURCE -fno-stack-protector" > configparms PATH={toolchain}/bin BUILD_CC={build}/bin/gcc CC={toolchain}/bin/arm-linux-gnueabihf-gcc AR={toolchain}/bin/arm-linux-gnueabihf-ar RANLIB={toolchain}/bin/arm-linux-gnueabihf-ranlib ../glibc-2.15/configure --prefix=/linaro-toolchain/ \ --exec-pr
18 2024-04-09
编程技术问答社区
如何使用CPUID.H将C程序交叉编译为AARCH64?
我正在尝试从64位Ubuntu Linux跨编译简单的C程序与AARCH64(ARM64).有人可以帮我为什么我会遇到这个错误. 找不到'cpuid.h'.我尝试在64位Linux上编译它,它可以正常工作.但是当使用aarch64-linux-gnu-gcc时,它会出现错误. 我会遇到以下错误. aarch64-linux-gnu-gcc -O1 -fno-stack-protector -march=armv8-a test.c -o test test.c:4:10: fatal error: cpuid.h: No such file or directory 4 | #include | ^~~~~~~~~ compilation terminated. test.c的内容: #include #include #include
2 2024-04-09
编程技术问答社区
使用头文件交叉编译应用程序和gcc的错误头文件
我正在尝试使用X86-64 Ubuntu上的工具链进行ARM7板进行交叉编译.我需要的标题在此处的文件系统上: .../include/ .../include/ [more] .../include/ 但是.../Include Directory包含不兼容的标准标头(由于我无法控制的原因).使用-i选项会导致GCC使用这些不兼容的标准标头,而不是应该使用的标准标头.在此之前,包括所有兼容标准标头路径以及-i选项也不起作用. 我想在本地编译时使用相同的源路径,也想使用ARM7板: #include #include ... #include 有没有办法使用当前存在的文件系统来执行此操作,或者我需要复制lib1,lib2,... libn头文件完全完全存在? 解决方案 您可以使用 将目录dir添加到
4 2024-04-09
编程技术问答社区
建立交叉编译器-错误:未找到libmpfr
我正在尝试构建一个交叉编译器.我遵循本教程: http://wiki.osdev.org/gcc_org/gcc_cross-ccross-compiler > 我在/opt/cross中安装了binutils.现在,我尝试使用MPFR-2.4.2安装GCC-4.7.4.我使用命令准备和配置: export PREFIX="$HOME/opt/cross" export TARGET=i686-elf export PATH="$PREFIX/bin:$PATH" mv gmp-4.3.2 gcc-4.7.4/gmp mv mpfr-2.4.2 gcc-4.7.4/mpfr mv mpc-0.8.1 gcc-4.7.4/mpc # i am in usr/src directory mkdir build-gcc cd build-gcc ../gcc-4.7.4/configure --target=$TARGET --prefix="$PREFIX" --disable
14 2024-04-09
编程技术问答社区
我可以在Ubuntu 9.10上用gcc交叉编译一个旧版本的Linux发行版吗?
我有一些旧的硬件,其中旧版本的Suse Linux在其上运行.现在,我拥有这台运行Ubuntu 9.10的高档开发机.我用来编译我的C应用程序的一些工具(用Python 2.6.x编写)在旧的Suse盒子上不可用.所以...可以为我的开发框上的那台旧机器编译吗? 我有以下步骤,但想在进行此任务之前进行交叉检查: 1.找出我的应用需要哪些静态/共享的液体,并查找/构建目标版本 2.还找到相应的标头文件 3.将正确的标志馈送到海湾合作委员会以使用目标标头和库 4.将正确的标志馈送到GCC以使用正确的体系结构(i386/i686),或者我需要交叉补偿工具链. 5.编译,上传和享受; - ) 我定期使用AVR-GCC和CC65,两者均是交叉编译.我知道您设置了一个COSS编译器来开发Gumstix之类的东西,因此应该可以对旧/其他Linux发行版进行相同的操作,而不是? c 解决方案 我接近的方式是抓取您的oldmachine:/usr/lib和oldmachine:/
8 2024-04-09
编程技术问答社区
Windows构建系统。如何构建一个没有*.sln或Visual C++ proj文件(*.vcproj)的项目(从其源代码)。
我正在面对 问题.因此,我需要使用"多线程dll"(/md)和"多线程dll dll debug"(/mdd)运行时选项来构建支持库(Zlib,libtiff,libpng,libpng,libiConv).但是问题是没有直接的方法.我的意思是没有 *.sln/*.vcproj文件,我可以在Visual C ++中打开并构建它. 我知道 gnu构建系统: $./configure --with-all-sorts-of-required-switches $./make $./make install 在搜索过程中,我遇到了一些叫做我从未从Visual C ++命令行中编译任何内容. 通常大多数项目提供makefile.现在如何从此产生 *.vcproj/*.sln? 我可以用 如果可以的话,如何设置不同的选项("多线程"(/mt),"多线程调试"(/MTD),"多线程DLL"(/MD),","运行时库的多线程DLL调试"(/MDD))? 我不知道还有
10 2024-04-09
编程技术问答社区
在64位系统上使用INTEL PIN的32位应用程序简介
我使用-m32 GCC 选项编制了C程序.我想使用PIN工具对此程序进行介绍.我的内核是64位. 我尝试过: - 1)pin -t64 -t -- 2)pin -t -- 3)pin -t -- i具有相同的.cpp工具文件,用于在32位和64位体系结构中以不同的方式编译的工具. 案例3调用了一个错误"无法加载.检查体系结构类型". 案例1和2,该命令成功,但产生了一些意外的输出,因为在这种情况下,写入文件中的图像名称是空的,但使用64位应用程序执行时包含适当的结果.哪种为这种情况设置PIN工具的正确方法? 解决方案 好吧,我找到了一个解决方法来编译64位拱门中的32位图书馆(我的意思是Instcount0). 我
12 2024-04-09
编程技术问答社区
SNMPd。无法打开/proc/bus/pci
i使用ELDK-3.1从源到PowerPC进行了跨编译的Net-SNMP 5.7.1. 当我尝试将snmpd守护程序加载到嵌入式板上时,我会看到消息: # snmpd -f -Lo pcilib: Cannot open /proc/bus/pci pcilib: Cannot find any working access method. 当然我的PPC板没有PCI,我想知道为什么NetSNMP在寻找它. 在一个以上的地方,我看到了相同的消息( sourceforge ,邮件架构, google groups ),但ir根本没有答案.另一个变体,在(有人可以帮我吗? 解决方案 我假设您在Linux目标上. Net-SNMP的ChangElog列表" [补丁3057093]:允许Linux使用libpci创建有用的IFDESCR字符串". 配置脚本将搜索一个可用的libpci,并且找到一个脚本,将定义 HAVE_PCI_LOOKUP_NAME和HAVE
30 2024-04-09
编程技术问答社区
以程序方式检索C结构成员的内存偏移量,无需硬编码成员名称
我有一个小程序,用于使用offsetof()运算符来打印结构成员的偏移. 我在许多情况下使用此程序,其中相关的结构是不同的,因此我需要为每个项目(以及对结构进行的每个修改)重新编程.由于这些结构往往很大(控制和状态结构),因此更新会花费大量时间. 我想拥有的是可以使用offsetof()等效的方法,但是第二个参数将是成员名称,以字符串给出,而不是在语句中对其进行硬编码. 要简化,让我们假设结构由单个和32位单词的数组组成,因此偏移始终是4的倍数. 另外,欢迎另一种方法,而不是名称字符串. [请注意,尽管成员都是单词大小的,但仍然仅通过计算成员来计算地址不是一个好的解决方案,因为编译器可能会在成员之间添加填充.正如建议的一个答案(已被删除)所建议的那样,使用包装属性可以通过删除桨叶来解决问题,这不是一个有效的解决方案,因为定义结构的实际应用程序可以使用填充来优化内存访问] 解决方案 您制作形式的"符号表"数组: #define S struct
4 2024-04-09
编程技术问答社区
如何为Arm Cortex M4交叉编译GSL?
我正在使用ARM Cortex M4的STM32 MCU,并希望使用GSL-2.7.1.但是,我已经尝试了命令./configure --prefix=/home/user_name/gsl_arm --target=arm-none-eabi以及我在Internet和工具链教程上可以找到的所有其他建议,但是在与构建库链接期间获得的最好情况下,我无法识别符号. ".在最坏的情况下,未识别AutoConfig的建议选项(例如,指定CPU).有人知道我必须如何交叉吗? 解决方案 接受答案.. 请注意,您必须使用软件浮点,因为某些库仅与此一起使用. 软件浮动指向并不是严格的要求,您确实可以使用硬浮点应用程序二进制界面(ABI)编译GSL. 编译器标志变量 cflags 已被拼写为 ccflags .因此,忽略了指定的编译器标志.这是有问题的,因为GSL的 configure 脚本还为嵌套模块生成了整个Libary的主体file. . 因此,GSL目录中的模块(例如
8 2024-04-09
编程技术问答社区
FindResource可以工作,LoadBitmap不可以,LoadImage从磁盘上可以。
我正在尝试使用 loadBitMap 从a 资源文件. 我已经验证了资源是否正确链接 - 使用十六进制编辑器检查最终EXE,显示位图正确地包装了EXE内部. 我还验证了位图是否有效 - 使用lr_loadfromfile使用loadImage在运行时加载磁盘上的位图,并且稍后将其添加到GUI元素时,我会看到它会出现. 我已经验证了我用于访问资源的ID也有效 - FindResource函数找到了资源和sizeofresource print the Bitmap的确切预期字节. 所以我有一个有效的链接资源,有效的ID和一个可加载的位图. 但是,LoadBitMap返回null,如果我从资源加载而不是从磁盘上加载,则Loadimap也会返回. getlastror返回0. 有什么想法吗?我是#dedining rt_bitmap in resource.rc正确吗? 谢谢. resource.h #define BMP_TEST
10 2024-04-09
编程技术问答社区
用函数gethostbyname编译C语言时出现静态链接错误
我正在使用函数gethostbyname()与Cross Compiler arm-none-linux-gnueabi尝试编译程序,但是当我在Android上运行二进制时,它不起作用. 我的代码在下面: /* gethostbyname-example.c */ #include #include #include #include #include #include #include #include #include extern int h_errno; int main(int argc,char **argv) { int x, x2; struct hostent *hp;
4 2024-04-08
编程技术问答社区
寻找有关将Linux应用程序移植到Windows的信息
今天,我已经遇到了一本非常好的书: unix unix unix unix到Linux®端口:全面参考 由Alfredo Mendoza,Chakarat Skawratananond,Artis Walker 这让我想起了我一直想知道的事情. "将Linux应用程序移植到Windows".我的意思是将本机Linux应用程序移植到本机Windows 的情况下,而没有涉及平台. 如果我能找到任何解释此主题的好书.我想到了很多惊人的Linux命令行工具,需要一个Windows端口. 请指出相关文章/教程/书籍. ps:请不要告诉我使用Cygwin等Linux仿真平台. 解决方案 MSYS&MINGW是将应用程序从Linux移植到Windows所需的两件事. 替代方法是使用 cygwin .但是我不认为它是100%移植,因为它增加了cygwin的依赖性. 其他解决方案 好吧,
18 2024-04-08
编程技术问答社区
用arm-none-eabi-gcc编译hello world程序C时出现错误
我正在尝试在Linux 64位机器上编译C Hello World程序.我正在使用手臂交叉编译器将应用程序加载到手臂处理器上.但是,使用arm-none-eabi-gcc -o hello hello.c编译代码时,我会遇到一系列错误: /home/dico/dico/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/gcc/gcc/arm-none-eabi/4.7.4/../../../../../..//arm-none-eabi/lib/libc.a(lib_a-exit.o):在函数exit': exit.c:(.text.exit+0x2c): undefined reference to _exit'中 /home/dico/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../../../../../../../../../none
16 2024-04-08
编程技术问答社区
如何在Crosstools-NG中以跨原生方式使用candian,在arm板上获得gcc?
我了解,在使用我的X86机器编译该ARM本机GCC时,将GCC在ARMV5板上编译可执行文件,我需要此设置: 配置工具链组件的机器:配置计算机:x86_64 机器构建工具链组件:构建机器:x86_64 运行工具链的机器:主机:ARM 机器工具链正在生成代码:目标机器:ARM 基于阅读cross-ng文档 Paths and misc options -> Try features marked as EXPERIMENTAL> 中的实验 Toolchain options -> Type (Cross) -> Cross-native (NO CODE!) (EXPERIMENTAL) ,但是当然,跨本植物不起作用,因为没有代码.谷歌搜索使我到 此如此帖子似乎暗示了构建系统和主机系统元组应为arm-unknown-linux-gnueabi? 要清楚,我已经能够使用crosstool-ng生成的交叉编译器来编译和运行可执行文件,现在我想在该ARMV
4 2024-04-08
编程技术问答社区
一个C语言可执行文件能否在所有操作系统上运行
如果我在操作系统(ex:windows)中创建C可执行文件, 该文件可以在其他操作系统上运行(AS:Linux,Mac-OS). 解决方案 试图给出一个完整的答案,这将是一个理论上的"是", 真的很大"但是". 第一件事要理解:由C编译器创建的二进制可执行文件在上与编译器为其他语言创建的一种相关的都没有差异.因此,以下内容不必对c. 做任何事情 有两个问题.操作系统具有用于存储二进制文件的不同文件格式(通常由代码,数据的部分组成,以及一些元信息,告诉系统将它们放置在哪里,进行什么重新定位等).然后,操作系统还以某种方式将其API暴露于二进制文件(对于Windows,一组系统DLL). 的确,只要处理器体系结构相同,您 仍然可以在另一个系统上运行二进制文件.您只需要一些软件.这是顺便说一句 wine do. 我只是猜想您来自哪里,就是阅读有关C平台独立的阅读.这是正确的,但仅适用于源代码.只要您拥有可用的C编译器,使用标准C以外的C程序将在任何平台上编译(然后
8 2024-04-08
编程技术问答社区