我正在尝试在我的intel x86主机上为ARM体系结构交叉编译helloworld内核(2.6.x)模块.
ARM的代码源工具链位于:/ home/ravi/workspace/hawk/arm-2009q3
内核源代码位于:/ home/ravi/workspace/hawk/linux-omapl1
我的Makefile:
ARCH=arm
CROSS_COMPILE=arm-none-linux-gnueabi
obj-m := Hello.o
KDIR := /home/ravi/workspace/hawk/linux-omapl1
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
Run Code Online (Sandbox Code Playgroud)
当我运行make时,.ko生成的是我的主机,这意味着makefile正在调用本机编译器而不是交叉编译器.我做错了什么?交叉编译器的二进制文件在我的路径中.
makefile cross-compiling kernel-module embedded-linux linux-toolchain
我已编译clang将其用作ARM的交叉编译器(通过配置它./configure --target=armv7l-unknown-linux-gnueabihf),但是当我尝试编译任何C代码时,它会尝试使用它/usr/bin/as.我已经为ARM编译了binutils,它们位于一个单独的目录中.如何指示clang(或llvm)使用我指定的汇编程序?
我在x86 ubuntu机器上为raspberry pi ARM目标编写了一些代码.我正在使用gcc-linaro-armhf工具链.我能够在pi上交叉编译并运行一些独立的程序.现在,我想将我的代码链接到外部库,如ncurses.我怎样才能做到这一点.
我应该将我的程序与主机上现有的ncurses lib链接,然后在ARM上运行吗?(我认为这不会起作用)我是否需要为arm获取lib的源代码或预构建版本,将其放入我的lib路径然后编译?
在这种情况下,最佳做法是什么?
我也想知道它如何用于c stdlib.在我的程序中,我使用了stdio函数,它在交叉编译后工作,没有做任何特殊的事情.我刚刚在makefile中为我的arm gcc提供了路径.所以,我想知道,它是如何得到正确的标准头文件和库?
我正在用C++编写一个应用程序,它依赖于我项目中的各种资源.现在,我有从生成的可执行文件到我的源中硬编码的每个资源的相对路径,这允许我的程序打开文件并读入每个资源中的数据.这工作正常,但它要求我从相对于资源的特定路径启动可执行文件.因此,如果我尝试从其他任何地方启动我的可执行文件,它将无法打开文件而无法继续.
有没有一种可移植的方法让CMake将我的资源嵌入到可执行文件(或库)中,以便我可以在运行时只在内存中访问它们而不是打开路径脆弱的文件?我找到了一个相关的问题,看起来嵌入资源可以用一些ld魔法做得很好.所以我的问题是如何使用CMake 以便携,跨平台的方式做到这一点?我实际上需要在x86和ARM上运行我的应用程序.我只支持Linux(嵌入式),但如果有人可以建议如何为Windows(嵌入式)做这个,也可以获得奖励积分.
编辑:我忘了提到解决方案的理想属性.我希望能够在为ARM构建时使用CMake交叉编译应用程序,而不是必须在我的ARM目标上本地编译它.
我正在尝试在eclipse上创建一个C++项目.我为此安装了eclipse-cdt.
在创建项目时,弹出窗口会询问交叉编译器前缀和交叉编译器路径.有人可以解释一下这些是什么以及我需要在这些领域添加什么?这些领域绝对需要填补吗?
在过去的几个月里,我几乎爱上了Clojure并拒绝使用其他任何东西.
我知道有ClojureScript,它使用Google Closure将Clojure的一个子集编译为JavaScript.
Objective-C/Cocoa的作品有什么相似之处吗?
我希望能够在Clojure中对应用程序进行原型设计,然后从中获取iOS应用程序.
[我很好,如果这可以阻止我从iOS的所有低级细节 - 我不需要访问任何低级细节(比如指针算术),我不能用Java做 - 我只是想能够轻松地将我的Clojure应用程序转换为iOS]
我已经在Windows机器上安装了Go 1.2,编写了一个虚拟程序并分别设置了环境变量GOARCH和GOOS"AMD64"和"linux".
当我发出" go build"命令时,我收到一个错误:
go build runtime: linux/amd64 must be bootstrapped using make.bat
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
当我尝试交叉编译一些 Rust 时,出现此错误;有谁知道我应该做什么?
当我运行 Cargo build --target aarch64 时会发生这种情况,我得到:
Compiling glib-sys v0.10.1
error: failed to run custom build command for `glib-sys v0.10.1`
...
pkg-config has not been configured to support cross-compilation.
Install a sysroot for the target platform and configure it via
PKG_CONFIG_SYSROOT_DIR and PKG_CONFIG_PATH, or install a
cross-compiling wrapper for pkg-config and set it via
PKG_CONFIG environment variable.
Run Code Online (Sandbox Code Playgroud)
我可能在一年前就问过这个问题,但无论如何我找不到任何答案。我尝试在 Cargo.toml 中添加各种行,但似乎没有任何帮助。
Cargo.toml 的相关部分有:
[target.'cfg(target_os = "android")'.dependencies]
cairo = "0.0.4"
freetype = "0.7.0"
glib = "0.14.2"
openssl = "0.10.36"
openssl-sys …Run Code Online (Sandbox Code Playgroud) 每条信息都有+1,有助于完成整个画面.你不需要知道整个答案.我会同样欣赏这个拼图的各个部分.谢谢.
我即将尝试我的第一次交叉编译.我搜索了SO和网络,发现了许多信息,但我并不总是知道如何将这些部分放在一起,因为仍然有一些缺失的部分.
我的主持人:linux Kubuntu amd64.
目标:linux kubuntu x86(32位)(应该很简单,不是吗?)
工具:g ++和cmake.
如何使用gcc/cmake在64位Linux机器上编译32位二进制文件
提到导出CFLAGS = -m32.这是一件作品.
跨平台:选择使用32/64位的
数据类型提及数据类型.我可能必须在我的代码中注意这一点.
#ifdef用于32位平台
#ifdef用于32位平台
链接到以下内容,虽然我还不太清楚如何使用它:http:
//predef.sourceforge.net/prearch.html
http://ww.ubuntuforums.org/showthread.php?t=1377396
我做了:sudo apt-get install g ++ - multilib
理想情况下,当我'make'(使用cmake)时,它应该吐出amd64二进制文件和x86二进制文件.
我的CMakeLists.txt的一部分如下所示:
add_definitions(-Wall -pthread)
add_executable (../run.amd64 user.cpp time.cpp init.cpp utils.cpp main.cpp)
target_link_libraries(../run.amd64 cppcms dbixx config++ ctemplate)
Run Code Online (Sandbox Code Playgroud)
如何引入标志-m32来创建第二个可执行文件?
我是否只想制作一个可执行文件(例如,用于测试和调试),如何告诉cmake创建一个或两个二进制文件?
此外,您可以看到我使用了一些第三方库,其中一些我必须自己编译.这是否意味着我还需要为目标主机编译每个二进制文件?有些人使用cmake,有些人使用:./ configure; 使;
如何为目标主机编译这些库(要使用的标志等)?
注意:动态链接库已经编译并安装在目标计算机上,所以也许我不需要担心这一步......我不确定:这是我遗失的部分之一......
我需要的是一种教程,或至少一些缺失的部分.我将更新这篇文章,详细介绍我取得的成就以及如何实现.
谢谢.
PS
搜索更多,我发现了这个:
http://www.mail-archive.com/cmake@cmake.org/msg26265.html
"原始设计似乎不是为了windows-linux或linux-windows而设计的交叉编译."
cmake没有测试linux amd64到linux x86.
http://www.cmake.org/Wiki/CMake_Cross_Compiling#FAQ.2FPotential_Problems
"在混合的32/64位Linux安装中,交叉编译不能仅用于构建32/64位."
??
我需要一种方法来分析我的GCC编译器的ARM输出文件.我正在编制裸机,我非常关心尺寸.我可以使用arm-none-eabi-objdump交叉编译器提供但是如果存在用于此任务的工具,则解析输出不是我想要做的事情.你知道这样的工具存在吗?我的搜索没有结果.
还有一件事,我自己的代码中的每个函数都在它自己的部分.