我在 linux 机器上编写了一个小型 c++ 项目。我能够使用 -I 和 _L,-l 命令正确编译和链接代码。
我在网上读到,在运行代码时,我们需要在 LD_LIBRARY_PATH 变量中拥有 .so 文件的路径。现在我使用的盒子是 64 位的,还有另一个使用 32 位版本的库的应用程序。所以 LD_LIBRARY_PATH 有两个版本的库的路径。
当我尝试运行我的应用程序时,例如。./xyz arg1 arg2,我收到以下错误
./DaemonCpp: error while loading shared libraries: libldap.so: wrong ELF class: ELFCLASS32
我认为这是因为它试图加载 32 位版本而不是 64 位版本。我尝试更改 LD_LIBRARY_PATH 中提到路径的顺序,以便首先出现 64 位路径,但我仍然收到此错误。有没有办法让应用程序使用 64 位版本的库。
作为我的主要问题的第二个问题,当我们链接 c++ 代码时,我们确实使用 -L 指定库路径,使用 -l 指定库名称。然后它应该知道在我运行可执行文件时要使用哪个库,而且我一开始就不应该遇到这个错误