printfs внутри общего объекта (динамическая библиотека) не печатается - PullRequest
0 голосов
/ 13 апреля 2009

У меня есть общий объект, который я создаю в Windows, используя связанную команду инструмента Real View Developer Suite на хосте Windows-

armlink -o mylib.so <"мои * .o файлы, указанные здесь">

Затем я связываю приложение с этой общей библиотекой mylib.so в Linux с помощью инструментов gcc.

У меня есть инструкции printf внутри функций в этом mylib.so, но когда я запускаю финальный исполняемый файл, я не получаю никаких выводов printf на консоль. (Stdio.h включается везде, где вызывается printfs)

Так есть ли какие-либо известные проблемы с общими библиотеками, которые приводят к тому, что printf или какие-либо системные функции / системные вызовы / функции библиотеки времени выполнения не работают должным образом?

Или это связано с моей специфической настройкой создания разделяемой библиотеки в цепочке инструментов компилятора на базе Windows, но связыванием этой разделяемой библиотеки с приложением на инструментах компилятора linux-gcc?

Спасибо.

-AD

1 Ответ

0 голосов
/ 14 апреля 2009

Так как ваша цель - arm, и я предполагаю, что это C, не должно быть проблемой скомпилировать некоторые файлы в Windows, а затем создать ссылку на Linux. Вы подтвердили это однако? Я бы предложил сделать hello.so для Windows, связанный с hello.c:

#include <stdio.h>
void hello(void) {printf("Hello\n");}

и затем ссылка main из main.c на linux:

void hello(void);
int main(int argc, char *argv[]){ hello(); return 0; }

как минимальный тест цепочки компиляторов.


Если вы вызываете printf из кода, определенного в вашем конечном исполняемом файле (т.е. не из кода вашей общей библиотеки), вы получаете какой-либо вывод из этого?


ли

strings --print-file-name -a mylib.so final_executable | grep "string from printf in shared library"

вернуть два события?


Есть ли ссылки на printf в

readelf -a mylib.so
readelf -a final_executable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...