2009-04-13 7 views
0

Я разделяемый объект, который я создаю на окна с помощью Real View Suite Разработчик инструмент связан команду на окнах с принимающейprintfs внутри общего объекта (динамическая библиотека) не получает напечатанной

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

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

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

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

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

спасибо.

-AD

ответ

0

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

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

, а затем связать основной из 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" 

возвращение двух occurenses?


Существуют ли какие-либо ссылки на PRINTF в

readelf -a mylib.so 
readelf -a final_executable 

?

+0

@hlovdal: printfs, которые в основном/приложении напечатаны правильно, только те, что находятся в общей библиотеке, ничего не выводят. И создание библиотеки, и связь с исполняемым файлом происходит правильно, я думаю. Я буду проверять выходы 'readelf', 'strings --printf ..'. -AD – goldenmean