- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用带有交叉编译器的 Xilinx SDK 作为 aarch64-none-elf-gcc
我正在我的程序中加载一个共享库,但出现错误
Building target: fsbl.elf
Invoking: ARM v8 gcc linker
aarch64-none-elf-gcc -L"/proj/ssw_xhd/boot/balakrish/workspace/hello_world/Debug" -Lwrk/released/2017.3/GA/2017.3_1005_1/installs/lin64/SDK/2017.3/gnu/aarch64/lin/aarch64-none/bin/../lib/gcc/aarch64-none-elf/6.2.1/../../../../aarch64-none-elf/bin/ld -Wl,-T -Wl,../src/lscript.ld -L../../fsbl_bsp/psu_cortexa53_0/lib -o "fsbl.elf" ./src/psu_init.o ./src/xfsbl_authentication.o ./src/xfsbl_board.o ./src/xfsbl_bs.o ./src/xfsbl_csu_dma.o ./src/xfsbl_dfu_util.o ./src/xfsbl_exit.o ./src/xfsbl_handoff.o ./src/xfsbl_hooks.o ./src/xfsbl_image_header.o ./src/xfsbl_initialization.o ./src/xfsbl_main.o ./src/xfsbl_misc.o ./src/xfsbl_misc_drivers.o ./src/xfsbl_nand.o ./src/xfsbl_partition_load.o ./src/xfsbl_plpartition_valid.o ./src/xfsbl_qspi.o ./src/xfsbl_rsa_sha.o ./src/xfsbl_sd.o ./src/xfsbl_translation_table.o ./src/xfsbl_usb.o -lhello -Wl,--start-group,-lxil,-lgcc,-lc,--end-group -Wl,--start-group,-lxilffs,-lxil,-lgcc,-lc,--end-group -Wl,--start-group,-lxilsecure,-lxil,-lgcc,-lc,--end-group -Wl,--start-group,-lxilpm,-lxil,-lgcc,-lc,--end-group -n
/tmp/ccjtx6CQ.ltrans0.ltrans.o: In function `main':
<artificial>:(.text.startup+0x18c): undefined reference to `dlopen'
<artificial>:(.text.startup+0x18c): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `dlopen'
<artificial>:(.text.startup+0x19c): undefined reference to `dlsym'
<artificial>:(.text.startup+0x19c): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `dlsym'
<artificial>:(.text.startup+0x1a4): undefined reference to `library_function'
<artificial>:(.text.startup+0x1a4): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `library_function'
<artificial>:(.text.startup+0x1ac): undefined reference to `dlclose'
<artificial>:(.text.startup+0x1ac): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `dlclose'
collect2: error: ld returned 1 exit status
make: *** [fsbl.elf] Error 1
最后我的问题是如何在交叉编译中加载-ldl如果我在 C/C++ Build settings-.libraries->library paths 中使用 -ldl 。我得到的错误是
/wrk/released/2017.3/GA/2017.3_1005_1/installs/lin64/SDK/2017.3/gnu/aarch64/lin/aarch64-none/bin/../lib/gcc/aarch64-none-elf/6.2.1/../../../../aarch64-none-elf/bin/ld: cannot find -ldl
collect2: error: ld returned 1 exit status
make: *** [fsbl.elf] Error 1
最佳答案
您的答案的不同部分似乎有冲突。
dlopen
、dlsym
和 friend 用于从文件系统上的另一个文件 加载代码。换句话说,这些函数与在运行时从目标平台文件系统和操作系统上可用的库加载代码有关。
在交叉编译的情况下,工具链需要提供实现这些功能的库(libdl.so
或libdl.a
)。工具链提供具有相关操作系统调用的代码,以使用代码打开文件,将其映射到内存并将其链接到正在运行的程序。
这就是冲突发挥作用的地方。您提到的工具链似乎是裸机 工具链。换句话说,这是一个直接在芯片上运行你的代码的工具链,没有操作系统。如果您没有操作系统,很明显您不能使用它来在运行时加载更多代码。
考虑到这一点,工具链没有为您提供合适的 libdl.a
实现的原因就很明显了。它不能在平台上通用实现。
关于c - 如何在 SDK 的交叉编译器中访问 -ldl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47053886/
我想在我的C++程序中静态链接opencv,因此用户不必自己下载opencv。 我已经尝试了Internet上的所有内容,以尝试在我的C++程序中使用opencv静态库,但是它不起作用。 我已使用-D
我生成了一个随机 5*5 矩阵 x,如下所示: >>> x = np.random.randn(5,5) 并使用 scipy.linalg.ldl 分解它像这样分解: >>> l, d, p = la
Cholesky Decomposition 有两种不同的形式: A = M * ctranspose (M) 和 LDL 形式 A = L * D * ctranspose (L) 其中 ctran
我正在使用带有交叉编译器的 Xilinx SDK 作为 aarch64-none-elf-gcc我正在我的程序中加载一个共享库,但出现错误 Building target: fsbl.elf Invo
我在 github 上编写/维护了一个小型单元测试库 https://github.com/acgreek/ExtremeCUnit使用 cmake 构建。您可以在 checkout 后通过“cmak
我正在尝试编写一个使用 dlysm 的 C 程序,但我一直收到对 dlysm 的 undefined reference 。我想我需要设置我的 -ldl 标志,但我不知道该怎么做。 我对 linux
当我的应用程序需要链接 pthread 库时,我在 CmakeLists.txt 中写入 set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lpthread") ,它可以工
我用java编写了这种LDL^T分解方法(它将方形对称矩阵“A”分解为3个矩阵,其中“L”是对角线上有1的下三角矩阵,“D”是对角矩阵正项,“L^T”是 L) 的转置矩阵。想知道是否可以用相同的方法返
假设我有一个对称半正定矩阵 A(numpy 数组)的“LDL^T”分解,我想将所有因子相乘以获得 A。 实现此目标的最有效方法是什么? 目前,我正在做(D 可用作“矢量”): np.dot(np.do
我正在寻找Python中半定矩阵的Cholesky/LDL分解。 搜索结果: numpy.linalg.cholesky 和 sympy.Matrix.LDLdecomposition 都仅适用于正定
我正在尝试在 ubuntu 14.04 下的 Clion 中编写一个 CMakeList.txt,如下所示: cmake_minimum_required(VERSION 2.8.3) project
我正在尝试在 i86 QNX 架构中构建 RTI perftest。当我尝试构建我生成的 makefile 时,我得到以下信息: Checking directory obj/i86QNX6.6qcc
引用以下代码 test_linker.cpp int main() { srand(time(0)); for (int i = 0; i using std::cout; usin
我正在尝试为 Matrix Vision 销售的 USB 相机 (mvBlueFOX) 编译示例应用程序。他们为我提供了应用程序的源代码、一个 make 文件和一组预编译的共享库。但是,生成文件无法成
TL;DR:我正在做一个使用 dlfcn.h 的 C 练习打开共享库。尽管根据其他帖子添加了(我认为是)正确的标志,但我仍然得到 undefined reference to dlopen 的错误,
我正在处理 LLVM Tutorial ,但我在编译时遇到了麻烦。我写了一个重现该问题的最小示例: #include "llvm/Module.h" #include "llvm/LLVMContex
我正在 CLion 中测试一个简单的问题,但被难住了:看来我无法在基本的 hello world 案例中包含使用 dlopen 的功能: #include #include using names
问题 我在本地 Ubuntu 计算机上启动了一个 C 项目。当我完成第一个版本(构建没问题)后,我决定将代码上传到运行 CentOS 7 的服务器上以实现更多功能。 双方的代码和 makefile 是
我都被谷歌搜索出来了!感谢任何可以帮助我的人...... 我已经构建了 test.so 并希望使用 dlfcn.h 中定义的 dlopen()、dlsym() 等动态调用它 我可以编译我在命令行上调用
我收到了对 dlsym@@GLIBC_2.2.5 的 undefined reference 即使在库之前和之后链接它之后。然而,在链接输出中,它似乎是在之前链接,但在所有库都应该工作之前链接,我猜。
我是一名优秀的程序员,十分优秀!