java - 在 ARM 处理器上构建 jNetPcap 时出现 "libpcap.so is not a regular file"错误

标签 java gcc ant arm raspberry-pi

我正在尝试在 Raspberry Pi 上编译 jNetPcap 源代码,但在运行 ant 编译时遇到以下错误。

[exec] Can't do inplace edit: ./build/lib/libpcap.so is not a regular file.
[exec] Result: 1
[echo] Fixed SONAME: ./build/lib/libpcap.so
[echo] readelf: Error: './build/lib/libpcap.so' is not an ordinary file
...
BUILD FAILED
/home/pi/myDir/build.xml:731: gcc failed with return code 1

build.xml 的第 731 行(及后续行)是:

...
<cc runtime="dynamic" outtype="shared" outfile="${build.lib.dir}/${lib.pcap.basename}" debug="${compiler.debug}" objdir="${build.obj.dir}" multithreaded="compiler.multithreaded" exceptions="compiler.exceptions" warnings="${compiler.warnings}">

    <env key="PATH" path="${compiler.cc.bin.dir};${env.PATH}" />

    <fileset dir="${src.c.dir}" />
    <includepath location="${build.include.dir}" />
    <includepath location="${src.c.dir}" />
    <sysincludepath location="${java.sdk.include.dir}" />
    <sysincludepath location="${java.sdk.include.dir}/linux" />
    <defineset define="LIBPCAP_VERSION=0x${compiler.LIBPCAP_VERSION}" if="compiler.LIBPCAP_VERSION" />
    <defineset define="DEBUG" if="DEBUG" />

    <linker name="${compiler.ld.cmd}">
        <syslibset libs=":../lib/libpcap.so" />

        <linkerarg value="-Wl,-soname,lib${lib.pcap.basename}.so" />

        <linkerarg value="-lstdc++" />
    </linker>
</cc>
...

看来根本问题是“.so”文件在某种程度上是特殊的,因此需要以不同的方式处理它们(作为旁注;也许这个 build.xml 在 Ubuntu 中工作,因为它知道将“.so”文件与普通文件相同)。我只是不知道如何修改此 build.xml,以便将它们视为特殊文件。

我该如何解决这个问题?

最佳答案

使用以下属性来修复。它在我的Linux上运行。尝试一下它是否可以在树莓派上工作。但我不确定。

<linker> 
      <libset libs="pcap" />
      <libset dir="path of lib" libs="pcap" />
</linker>

没有.so和lib

关于java - 在 ARM 处理器上构建 jNetPcap 时出现 "libpcap.so is not a regular file"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29564775/

相关文章:

java - JDBC 准备语句,编译器无法识别 set 方法

java - 如何在 Activity 之间共享点击处理程序

Java代码将依赖项列表转换为构建顺序?

xml - 为什么在使用 "ant"命令 build.xml 时出现导入错误?

ant - 通过ant将 "-J-Duser.language"传递到javac中,以确保以正确的语言报告编译错误

java 获取 *NIX 上非当前用户的用户主目录

java - 如何使用 Java 处理 Selenium 中的维基百科下拉列表

c - 奇怪的 'asm' 操作数有不可能的约束错误

c - 空的初始值设定项列表是有效的 C 代码吗?

c - 为什么 GCC 会对 ARM Cortex-A9 产生非法的未对齐访问