2009-04-13 66 views
0

我有我使用實時查看開發者套件工具窗口創建共享對象鏈接在Windows命令宿主printfs輸出

的armlink -o mylib.so <「我*這裏給出.o文件「>

然後,我對使用gcc工具linux此mylib.so共享庫鏈接的應用程序。

我在這裏面mylib.so功能printf語句,但是當我運行最終可執行文件,我沒有得到任何控制檯輸出的printf(stdio.h中被inlcuded無論printfs輸出的稱呼)

所以有沒有與導致printf或者任何系統功能/系統調用/運行時庫功能無法正常工作,共享庫中的任何已知的問題?

還是那跟我做窗戶上的共享庫基於編譯工具鏈,但這個共享庫在Linux-gcc編譯工具的應用程序連接的特殊設置呢?

謝謝。

〜AD

回答

0

因爲你的目標是胳膊,我認爲這是C它不應該是在Windows上編譯的一些文件有問題,然後在linux鏈接。你有沒有驗證過這個?我建議讓Windows上的hello.so,從hello.c的鏈接:

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

,然後在Linux上鍊接主從main.c中:

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?


是否有任何引用在

readelf -a mylib.so 
readelf -a final_executable 

給printf?

+0

@hlovdal:主/應用程序中的printfs被正確打印,只有共享庫中的printfs不會「輸出」任何內容。此外庫創建,並鏈接到可執行文件正在發生我猜。 我將檢查有關「readelf」,「串--printf ..」輸出。 〜AD – goldenmean 2009-04-14 03:40:59