c++ - 使用 Maven NAR 插件对 ARM 进行交叉编译

标签 c++ maven arm cross-compiling maven-nar-plugin

我正在尝试使用 Debian/Ubuntu 上的 Maven NAR 插件为 x86/amd64 和 ARM 构建一个 C++ 应用程序。我很难使用arm-linux-gnueabi-gcc 为ARM 交叉编译build设置正确的配置文件。

我的 pom.xml 中的配置文件片段如下所示:

        <profile>
        <id>arm-linux-cross</id>
        <properties>
            <debug.option>true</debug.option>
        </properties>
        <build>
            <plugins>
                <plugin>
                    <groupId>com.github.maven-nar</groupId>
                    <artifactId>nar-maven-plugin</artifactId>
                    <configuration>
                        <arch>arm</arch>
                        <cpp>
                            <name>arm-linux-gnueabi-g++</name>
                            <options>
                                <option>-march=armv5</option>
                            </options>
                        </cpp>
                        <linker>
                            <name>arm-linux-gnueabi-gcc</name>
                            <sysLibs>
                                <sysLib>
                                    <name>stdc++</name>
                                </sysLib>
                                ...
                            </sysLibs>
                        </linker>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

使用“mvncompile-Parm-linux-cross”构建该配置文件不起作用:

[INFO] Using AOL: amd64-Linux-arm-linux-gnueabi-gcc
[INFO] ------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------
[INFO] Total time: 1.464s
[INFO] Finished at: Fri Feb 13 11:00:05 CET 2015
[INFO] Final Memory: 10M/147M
[INFO] -----------------------------------------------------------
[ERROR] Failed to execute goal com.github.maven-nar:nar-maven-plugin:3.0.0:nar-validate (default-nar-validate) on project sirka-model: Cannot find version number for linker 'arm-linux-gnueabi-gcc' -> [Help 1]

显然,此处使用的 AOL 不可用,因此 Maven 无法识别编译器/链接器。 但如何添加所需的 AOL? 或者还有另一种方法可以使用 Maven 进行 ARM 交叉编译吗?

最佳答案

最近有人added basic ARM support to the NAR plugin 。但 AOL 只是 arm-Linux-gcc——我不知道你上面的 gnueabi 是从哪里来的。

如果 NAR 插件的 standard ARM settings不适合你,你可以尝试使用你自己的变体。 Here is an example project定义其自己的自定义 AOL 属性。

关于c++ - 使用 Maven NAR 插件对 ARM 进行交叉编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28497042/

相关文章:

c++ - OpenCL:只关心线程全局 ID 时的理想 block 数?

c++ - 从堆栈中删除一个对象?

c++ - 在数组中插入元素

c++ - 与使用声明在 GCC 中编译但在 MSVS 中编译的范围相同的类声明

winapi - Windows 8 ARM是否也称为 "Windows RT"是否有第三方开发人员可以使用Winapi(win32)?

c - Intel x86 到 ARM 汇编转换

android-maven-plugin:将proguard绑定(bind)到后期

java - Maven 不知道我的内部项目

java - 使用 Maven 依赖插件创建带有依赖 jar 的库 jar

assembly - ARM 指令的管道再填充周期