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

Cross compile for ARM using Maven NAR Plugin

本文关键字:交叉编译 ARM Maven NAR 插件 使用      更新时间:2023-10-16

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

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>

使用"mvn-compile-p arm-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?或者还有其他方法可以将ARM与Maven进行交叉编译吗?

最近有人为NAR插件添加了基本的ARM支持。但AOL只是arm-Linux-gcc——我不知道你上面的gnueabi是从哪里来的。

如果NAR插件的标准ARM设置不适合您,您可以尝试使用自己的变体。下面是一个定义自己的自定义AOL属性的示例项目。