qemu-user не может найти общие библиотеки при запуске динамически связанного исполняемого файла

Я создал приложение c ++ для Debian Jessie 8.10 amd64, предназначенное для архитектуры arm. Я кросс-скомпилировал исходный код для armhf по ссылке https://wiki.embeddedarm.com/wiki/Jessie_armhf_Cross_Compile.
Приложение также зависит от некоторых общих библиотек 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

Исполняемый файл успешно собран. Более того, я хотел запустить исполняемый файл на Debian Linux, поэтому я установил следующие пакеты:

sudo apt-get install qemu binfmt-support qemu-user-static qemu-user

Но когда я даю:

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

Я также добавил путь / usr / local / arm / lib / в файл arm-linux-gnueabihf.conf, который находится в /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 не может выполнить эту задачу?

1

Решение

Если вы заметили, что получаете ошибки при запуске ldconfig -v «soname is unknown machine 40», то есть ваши пользователи не добавляются в путь.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]