qemu用户在运行动态链接的可执行文件时无法找到共享库 我在Debian Jesie 8.10上为ARM架构创建了一个C++应用程序。我按照链接交叉编译了armhf的源代码。 该应用程序还依赖于一些Poco共享库,这些库安装在文件夹/usr/local/arm/lib/中。我使用的Makefile如下所示: CC := /usr/bin/arm-linux-gnueabihf-g++ # Folders SRCDIR := src BUILDDIR := build TARGETDIR := bin # Targets EXECUTABLE := my_app TARGET := $(TARGETDIR)/$(EXECUTABLE) SRCEXT := cpp SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT)) OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o)) CFLAGS := -c -Wall -std=c++14 INC := -I include -I /usr/local/arm/include/ LIB := -L /usr/local/arm/lib/ -lPocoCrypto -lPocoFoundation -lPocoJSON -lPocoNet -lPocoNetSSL -lPocoUtil $(TARGET): $(OBJECTS) @echo " Linking..." $(CC) $^ -o $(TARGET) $(LIB) $(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) @mkdir -p $(BUILDDIR) $(CC) $(CFLAGS) $(INC) -c -o $@ $< clean: @echo " Cleaning..."; $(RM) -r $(BUILDDIR) $(TARGET) .PHONY: clean

qemu用户在运行动态链接的可执行文件时无法找到共享库 我在Debian Jesie 8.10上为ARM架构创建了一个C++应用程序。我按照链接交叉编译了armhf的源代码。 该应用程序还依赖于一些Poco共享库,这些库安装在文件夹/usr/local/arm/lib/中。我使用的Makefile如下所示: CC := /usr/bin/arm-linux-gnueabihf-g++ # Folders SRCDIR := src BUILDDIR := build TARGETDIR := bin # Targets EXECUTABLE := my_app TARGET := $(TARGETDIR)/$(EXECUTABLE) SRCEXT := cpp SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT)) OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o)) CFLAGS := -c -Wall -std=c++14 INC := -I include -I /usr/local/arm/include/ LIB := -L /usr/local/arm/lib/ -lPocoCrypto -lPocoFoundation -lPocoJSON -lPocoNet -lPocoNetSSL -lPocoUtil $(TARGET): $(OBJECTS) @echo " Linking..." $(CC) $^ -o $(TARGET) $(LIB) $(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) @mkdir -p $(BUILDDIR) $(CC) $(CFLAGS) $(INC) -c -o $@ $< clean: @echo " Cleaning..."; $(RM) -r $(BUILDDIR) $(TARGET) .PHONY: clean,c++,arm,debian,cross-compiling,qemu,C++,Arm,Debian,Cross Compiling,Qemu,但当我给出: qemu-arm -L /usr/local/arm/lib/ ./my_app 我得到以下输出: error while loading shared libraries: libPocoCrypto.so.48: cannot open shared object file: No such file or directory 我还在文件arm-linux-gnueabihf.conf中添加了路径/usr/local/arm/lib/,该文件位于/etc/ld.so.con

但当我给出:

qemu-arm -L /usr/local/arm/lib/ ./my_app
我得到以下输出:

error while loading shared libraries: libPocoCrypto.so.48: cannot open shared object file: No such file or directory
我还在文件arm-linux-gnueabihf.conf中添加了路径/usr/local/arm/lib/,该文件位于/etc/ld.so.conf.d/
当我给sudo ldconfig-v时,我得到了:

/sbin/ldconfig.real: /usr/local/arm/lib/libPocoUtil.so.48 is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoNet.so.48 is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoFoundation.so.48 is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoJSON.so.48 is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoFoundation.so is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoCrypto.so is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoUtil.so is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoCrypto.so.48 is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoNetSSL.so is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoJSON.so is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoNetSSL.so.48 is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoNet.so is for unknown machine 40.
我也给出了:
qemu-arm-L/usr/lib/arm-linux-gnueabihf//my_-app
但结果是一样的。

我是否做错了什么,或者qemu用户无法执行此任务?

如果您在运行ldconfig-v“soname is unknown machine 40”时发现错误,这意味着您的so没有添加到路径中。

是否有办法解决此问题?相关:
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoUtil.so.48 is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoNet.so.48 is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoFoundation.so.48 is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoJSON.so.48 is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoFoundation.so is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoCrypto.so is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoUtil.so is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoCrypto.so.48 is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoNetSSL.so is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoJSON.so is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoNetSSL.so.48 is for unknown machine 40.
/sbin/ldconfig.real: /usr/local/arm/lib/libPocoNet.so is for unknown machine 40.