cc crate 找不到 libjvm.so 即使它是通过 RUSTFLAGS='-L' 提供的
cc crate failed to find libjvm.so even if it's provided via RUSTFLAGS='-L'
我正在使用 cc-rs 构建一个 rust/c 混合项目:hdfs-jni
简而言之,hdfs-jni 依赖于 Apache Hadoop 提供的 libhdfs.so
,而 libhdfs.so
本身依赖于 libjvm.so
,因为它是 HDFS java 方法的包装器.
在我的 build.rs
:
我提供 println!("cargo:rustc-link-search=all={}/jre/lib/amd64/server", val);
指向包含 libjvm.so
.
的目录
此外,我通过 libjvm.so
目录进行测试:RUSTFLAGS='-L /usr/local/hadoop/lib/native' cargo test
然而,由于libjvm.so
未找到,测试构建仍然失败:
#21 13.19 = note: "cc" "-m64" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1001j4iwukq73jh5.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.10m3qv1glnl38rsh.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.14cw065uzcvckiyj.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.181812t0icrtp7m8.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1fb7c5scq0twwepu.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1fwnn1dcqdkl7o48.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1hyqpqn5uy6raw22.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1ka728zabzfj4of.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1lf4ae0xvnck7iof.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1lzadt4yo4mdrbxi.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1mpm6pdinko68z1y.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1mq5sjlsso74ge20.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1on0hlbx6hh6skxa.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1po1zb0ayboomcnj.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1qe4hvniy688p7ix.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1qqtajr0ximub582.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1r8noea4fwyofsh1.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1vu5vkk8mfcdsf71.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.25emxujrtpuv873a.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.25uplz3nr4cz5pp0.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.26nwpz1yp9srjtet.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.26nzcxum7xr3pbot.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2awm21nl0qww8gr1.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2c3j6vmp7ndot4cg.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2dujg2cvxvenzxd3.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2g7texsfg10puh16.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2hjztk3051w23q77.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2mlygdj03pioh22u.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2okgolvbjbpoiwq7.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2owk0nl10kdkwifc.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2qjisuo1i7lyeuzw.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2rt9jtdi3d47muj.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2ya57fa01ghblvvj.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2yixq8pjrs2usgxe.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2zi65c7goeiho79a.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2zwiag918crxdw0t.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.30jb1uxm9umq95ef.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.31kkxzq1miyzy6so.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.33l3y2892oukcpzn.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.33wf8enz1kzmqc7y.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.345ox6lnrzlknu6j.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.37f7eb268a9orp1b.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.39ohpizl4sy6yi4x.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3a01jib8lykxl02j.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3ab6hnrxqpg98pdx.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3bhh2r0z3sd13zm5.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3iy1pym8y5v19yrf.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3kidh3xy23c2apgs.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3rhzc4oanurt7y7p.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3s1x2u7xuhxx185e.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3tv5q6el3iys7a88.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3u7mp5myd0qt19y8.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3w4p1tuspdw8imzf.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3x6ekst41wxhbjv0.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.423gi0h0dwz819oe.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.46kenglex74yi3i4.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.46kz81jyjd5tf78t.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.498oknd6mksdbdy0.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.49tc239rmje0ni4c.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4bxkrrulm2ahcq8z.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4ctgxm7f470ebtjm.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4du9hrq3itfo1se2.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4gzvlb9srfo5dp49.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4i8yvpz7128hmpj9.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4jeiqzueltp75dvg.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4megktpe8niifxy.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4naap9hem7rk9dh8.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4nod5uy5csfwgfp0.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4sbmx8swissv8py7.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4t5sjr6eg9jyrkl8.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4tdzl46bn7j4b5jm.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4udm14hdj69h9jm8.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4xgrxyzl6rkb1aqg.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.52eeed5xzgtvltq4.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.54bu2yvz9lkyhvok.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.54yvotr5sjx9t6bb.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.55fbfeec48ey7huh.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.56t48kr4f84a0rve.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.5769wl6vkrcj9qjg.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.5959l5y0si6n13h9.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.5b6eqahn0qh111n.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.5grpotenffhbij3o.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.5h6uyr2nls3551t.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.8aeqp39130bvgx3.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.ag7r8z21j961kxp.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.bnl6rlp1cupt935.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.bw34mz2m2wueh17.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.c9jlleaxwwrdotb.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.cnbymdhm99tyuwq.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.dkz9imqykhjk137.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.eezwbeyr4k1fg8s.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.eu9lxsvbut5y7wx.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.h5a6vl09dum99p1.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.jzbx8lvxcacud0x.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.kjh660mzswcbzbn.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.kp62cgb9kzqsv68.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.m1t6rk3phya204a.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.mk3y7hcd7l2o8xa.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.mm17mar66ql9wk3.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.olovc5g3if3tjzw.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.pke946lsjzj3o12.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.rpaqi82oth0pa5h.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.s8yg0446wnwbjrx.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3rsrv724cn9kbvnx.rcgu.o" "-Wl,--as-needed" "-L" "/tmp/hdfs-jni/target/debug/deps" "-L" "/usr/local/hadoop/lib/native" "-L" "/tmp/hdfs-jni/target/debug/deps" "-L" "/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/jre/lib/amd64/server/libjvm.so" "-L" "/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/jre/lib/amd64/server" "-L" "/usr/local/hadoop/lib/native" "-L" "/tmp/hdfs-jni/target/debug/build/hdfs-jni-f283b12092a2a6c6/out" "-L" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-lhdfs" "-Wl,-Bstatic" "-Wl,--whole-archive" "-lminidfs" "-Wl,--no-whole-archive" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libtest-3599c5491d44663f.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libterm-1d56ea45a67842c8.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgetopts-9749f7c936ebf9a7.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunicode_width-627a220173eefff1.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_std-16ed15e5bfe21b9b.rlib" "/tmp/hdfs-jni/target/debug/deps/liburl-2030b2eccfa9f426.rlib" "/tmp/hdfs-jni/target/debug/deps/libidna-a43200e84c3cb34b.rlib" "/tmp/hdfs-jni/target/debug/deps/libunicode_normalization-f88ccced2be4bc93.rlib" "/tmp/hdfs-jni/target/debug/deps/libtinyvec-b0b99c866aca13aa.rlib" "/tmp/hdfs-jni/target/debug/deps/libtinyvec_macros-f6b5563d3767ea26.rlib" "/tmp/hdfs-jni/target/debug/deps/libunicode_bidi-154cf6eb613583e6.rlib" "/tmp/hdfs-jni/target/debug/deps/libform_urlencoded-44cac09508f6fc0a.rlib" "/tmp/hdfs-jni/target/debug/deps/libpercent_encoding-549c334c22432c49.rlib" "/tmp/hdfs-jni/target/debug/deps/libmatches-4bfbedf5881bce99.rlib" "/tmp/hdfs-jni/target/debug/deps/liblog-975203197fcf8dc1.rlib" "/tmp/hdfs-jni/target/debug/deps/libcfg_if-38c8a3e888ecb06a.rlib" "/tmp/hdfs-jni/target/debug/deps/liblibc-3d39ec8c446182a6.rlib" "/tmp/hdfs-jni/target/debug/deps/libthiserror-18247737637b9f79.rlib" "-Wl,--start-group" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-2420485b9e5ef5e1.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-785e3cb61c4b1960.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-087191a88bdaa22d.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-9981842c02975178.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-6fb405869b015fde.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-d05c5c3c56004b7b.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-42d74d2097528b38.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-fb36534c113d2209.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-b56b9042c12b6535.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-491902d6cb3e76df.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-61834e0981b8c367.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-f78aa99d613a55bc.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-53ee54cd7fed2c57.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-544ecdbd6cda3c58.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-379cc252b6943a79.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-8063eea38dcc5e62.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-5b228734afae15ee.rlib" "-Wl,--end-group" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-d6c7a399d95d173f.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs"
= note: /usr/bin/ld: warning: libjvm.so, needed by /usr/local/hadoop/lib/native/libhdfs.so, not found (try using -rpath or -rpath-link)
#21 13.19 /usr/bin/ld: /usr/local/hadoop/lib/native/libhdfs.so: undefined reference to `JNI_CreateJavaVM@SUNWprivate_1.1'
#21 13.19 /usr/bin/ld: /usr/local/hadoop/lib/native/libhdfs.so: undefined reference to `JNI_GetCreatedJavaVMs@SUNWprivate_1.1'
#21 13.19 collect2: error: ld returned 1 exit status
错误日志还说编译时有 -L libjvm.so
。有人可以解释一下 cc 编译发生了什么吗?
可以在 https://github.com/yjshen/hdfs-jni 上找到完整的可运行代码,并且可以使用 ./dev/build-hdfs-jni.sh
简单地重现问题。它使用构建一个 docker 安装了 rust / hdfs 的镜像,然后运行 cargo test。
有人可以启发我吗?谢谢!
-L
编译器选项将 linker 搜索的路径添加到通过 -l
选项直接引用的 link 库中。
它不影响搜索路径以查找这些库所依赖的其他库 - 这些库由 运行-time linker ld.so
.
您可以使用 ldd
命令查看如何找到这些依赖项,例如:
ldd /usr/local/hadoop/lib/native/libhdfs.so
如果任何依赖库显示为not found
,则意味着运行次linker找不到它们。
运行 时间 link 人使用的机制很复杂 - 请参阅 ld.so
的手册页以获取更多信息。一个快速的解决方法是设置环境变量 LD_LIBRARY_PATH
以包含包含 libjvm.so
的目录,例如:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/jvm/java/jre/lib/amd64/server/
我正在使用 cc-rs 构建一个 rust/c 混合项目:hdfs-jni
简而言之,hdfs-jni 依赖于 Apache Hadoop 提供的 libhdfs.so
,而 libhdfs.so
本身依赖于 libjvm.so
,因为它是 HDFS java 方法的包装器.
在我的 build.rs
:
我提供 println!("cargo:rustc-link-search=all={}/jre/lib/amd64/server", val);
指向包含 libjvm.so
.
此外,我通过 libjvm.so
目录进行测试:RUSTFLAGS='-L /usr/local/hadoop/lib/native' cargo test
然而,由于libjvm.so
未找到,测试构建仍然失败:
#21 13.19 = note: "cc" "-m64" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1001j4iwukq73jh5.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.10m3qv1glnl38rsh.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.14cw065uzcvckiyj.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.181812t0icrtp7m8.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1fb7c5scq0twwepu.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1fwnn1dcqdkl7o48.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1hyqpqn5uy6raw22.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1ka728zabzfj4of.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1lf4ae0xvnck7iof.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1lzadt4yo4mdrbxi.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1mpm6pdinko68z1y.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1mq5sjlsso74ge20.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1on0hlbx6hh6skxa.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1po1zb0ayboomcnj.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1qe4hvniy688p7ix.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1qqtajr0ximub582.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1r8noea4fwyofsh1.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.1vu5vkk8mfcdsf71.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.25emxujrtpuv873a.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.25uplz3nr4cz5pp0.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.26nwpz1yp9srjtet.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.26nzcxum7xr3pbot.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2awm21nl0qww8gr1.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2c3j6vmp7ndot4cg.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2dujg2cvxvenzxd3.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2g7texsfg10puh16.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2hjztk3051w23q77.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2mlygdj03pioh22u.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2okgolvbjbpoiwq7.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2owk0nl10kdkwifc.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2qjisuo1i7lyeuzw.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2rt9jtdi3d47muj.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2ya57fa01ghblvvj.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2yixq8pjrs2usgxe.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2zi65c7goeiho79a.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.2zwiag918crxdw0t.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.30jb1uxm9umq95ef.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.31kkxzq1miyzy6so.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.33l3y2892oukcpzn.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.33wf8enz1kzmqc7y.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.345ox6lnrzlknu6j.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.37f7eb268a9orp1b.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.39ohpizl4sy6yi4x.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3a01jib8lykxl02j.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3ab6hnrxqpg98pdx.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3bhh2r0z3sd13zm5.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3iy1pym8y5v19yrf.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3kidh3xy23c2apgs.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3rhzc4oanurt7y7p.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3s1x2u7xuhxx185e.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3tv5q6el3iys7a88.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3u7mp5myd0qt19y8.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3w4p1tuspdw8imzf.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3x6ekst41wxhbjv0.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.423gi0h0dwz819oe.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.46kenglex74yi3i4.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.46kz81jyjd5tf78t.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.498oknd6mksdbdy0.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.49tc239rmje0ni4c.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4bxkrrulm2ahcq8z.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4ctgxm7f470ebtjm.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4du9hrq3itfo1se2.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4gzvlb9srfo5dp49.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4i8yvpz7128hmpj9.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4jeiqzueltp75dvg.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4megktpe8niifxy.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4naap9hem7rk9dh8.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4nod5uy5csfwgfp0.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4sbmx8swissv8py7.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4t5sjr6eg9jyrkl8.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4tdzl46bn7j4b5jm.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4udm14hdj69h9jm8.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.4xgrxyzl6rkb1aqg.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.52eeed5xzgtvltq4.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.54bu2yvz9lkyhvok.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.54yvotr5sjx9t6bb.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.55fbfeec48ey7huh.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.56t48kr4f84a0rve.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.5769wl6vkrcj9qjg.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.5959l5y0si6n13h9.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.5b6eqahn0qh111n.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.5grpotenffhbij3o.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.5h6uyr2nls3551t.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.8aeqp39130bvgx3.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.ag7r8z21j961kxp.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.bnl6rlp1cupt935.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.bw34mz2m2wueh17.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.c9jlleaxwwrdotb.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.cnbymdhm99tyuwq.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.dkz9imqykhjk137.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.eezwbeyr4k1fg8s.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.eu9lxsvbut5y7wx.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.h5a6vl09dum99p1.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.jzbx8lvxcacud0x.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.kjh660mzswcbzbn.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.kp62cgb9kzqsv68.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.m1t6rk3phya204a.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.mk3y7hcd7l2o8xa.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.mm17mar66ql9wk3.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.olovc5g3if3tjzw.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.pke946lsjzj3o12.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.rpaqi82oth0pa5h.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.s8yg0446wnwbjrx.rcgu.o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531.3rsrv724cn9kbvnx.rcgu.o" "-Wl,--as-needed" "-L" "/tmp/hdfs-jni/target/debug/deps" "-L" "/usr/local/hadoop/lib/native" "-L" "/tmp/hdfs-jni/target/debug/deps" "-L" "/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/jre/lib/amd64/server/libjvm.so" "-L" "/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/jre/lib/amd64/server" "-L" "/usr/local/hadoop/lib/native" "-L" "/tmp/hdfs-jni/target/debug/build/hdfs-jni-f283b12092a2a6c6/out" "-L" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-lhdfs" "-Wl,-Bstatic" "-Wl,--whole-archive" "-lminidfs" "-Wl,--no-whole-archive" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libtest-3599c5491d44663f.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libterm-1d56ea45a67842c8.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgetopts-9749f7c936ebf9a7.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunicode_width-627a220173eefff1.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_std-16ed15e5bfe21b9b.rlib" "/tmp/hdfs-jni/target/debug/deps/liburl-2030b2eccfa9f426.rlib" "/tmp/hdfs-jni/target/debug/deps/libidna-a43200e84c3cb34b.rlib" "/tmp/hdfs-jni/target/debug/deps/libunicode_normalization-f88ccced2be4bc93.rlib" "/tmp/hdfs-jni/target/debug/deps/libtinyvec-b0b99c866aca13aa.rlib" "/tmp/hdfs-jni/target/debug/deps/libtinyvec_macros-f6b5563d3767ea26.rlib" "/tmp/hdfs-jni/target/debug/deps/libunicode_bidi-154cf6eb613583e6.rlib" "/tmp/hdfs-jni/target/debug/deps/libform_urlencoded-44cac09508f6fc0a.rlib" "/tmp/hdfs-jni/target/debug/deps/libpercent_encoding-549c334c22432c49.rlib" "/tmp/hdfs-jni/target/debug/deps/libmatches-4bfbedf5881bce99.rlib" "/tmp/hdfs-jni/target/debug/deps/liblog-975203197fcf8dc1.rlib" "/tmp/hdfs-jni/target/debug/deps/libcfg_if-38c8a3e888ecb06a.rlib" "/tmp/hdfs-jni/target/debug/deps/liblibc-3d39ec8c446182a6.rlib" "/tmp/hdfs-jni/target/debug/deps/libthiserror-18247737637b9f79.rlib" "-Wl,--start-group" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-2420485b9e5ef5e1.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-785e3cb61c4b1960.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-087191a88bdaa22d.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-9981842c02975178.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-6fb405869b015fde.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-d05c5c3c56004b7b.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-42d74d2097528b38.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-fb36534c113d2209.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-b56b9042c12b6535.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-491902d6cb3e76df.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-61834e0981b8c367.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-f78aa99d613a55bc.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-53ee54cd7fed2c57.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-544ecdbd6cda3c58.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-379cc252b6943a79.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-8063eea38dcc5e62.rlib" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-5b228734afae15ee.rlib" "-Wl,--end-group" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-d6c7a399d95d173f.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/usr/local/rustup/toolchains/1.54.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/tmp/hdfs-jni/target/debug/deps/hdfs-cec6944b3f9f1531" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs"
= note: /usr/bin/ld: warning: libjvm.so, needed by /usr/local/hadoop/lib/native/libhdfs.so, not found (try using -rpath or -rpath-link)
#21 13.19 /usr/bin/ld: /usr/local/hadoop/lib/native/libhdfs.so: undefined reference to `JNI_CreateJavaVM@SUNWprivate_1.1'
#21 13.19 /usr/bin/ld: /usr/local/hadoop/lib/native/libhdfs.so: undefined reference to `JNI_GetCreatedJavaVMs@SUNWprivate_1.1'
#21 13.19 collect2: error: ld returned 1 exit status
错误日志还说编译时有 -L libjvm.so
。有人可以解释一下 cc 编译发生了什么吗?
可以在 https://github.com/yjshen/hdfs-jni 上找到完整的可运行代码,并且可以使用 ./dev/build-hdfs-jni.sh
简单地重现问题。它使用构建一个 docker 安装了 rust / hdfs 的镜像,然后运行 cargo test。
有人可以启发我吗?谢谢!
-L
编译器选项将 linker 搜索的路径添加到通过 -l
选项直接引用的 link 库中。
它不影响搜索路径以查找这些库所依赖的其他库 - 这些库由 运行-time linker ld.so
.
您可以使用 ldd
命令查看如何找到这些依赖项,例如:
ldd /usr/local/hadoop/lib/native/libhdfs.so
如果任何依赖库显示为not found
,则意味着运行次linker找不到它们。
运行 时间 link 人使用的机制很复杂 - 请参阅 ld.so
的手册页以获取更多信息。一个快速的解决方法是设置环境变量 LD_LIBRARY_PATH
以包含包含 libjvm.so
的目录,例如:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/jvm/java/jre/lib/amd64/server/