Я пытаюсь скомпилировать источник jNetPcap на моем Raspberry Pi, но при запуске 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
Строка 731 (и сверху) файла build.xml:
...
<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