我在c代碼中使用了string.h頭文件,該代碼使用arm-gcc編譯器進行編譯,並且生成的可執行文件將在android設備上執行。 當我將可執行文件推送到設備並執行它時,它向我提供了鏈接錯誤。 如何在這樣的設備上使用string.h中的函數? 這些頭文件是硬件特定的嗎?由arm-gcc編譯器編譯的c代碼的頭文件
回答
ARM EABI指出,ANSI C庫的頭文件應由編譯程序獨立於庫的位置提供。如果你正在交叉編譯,你必須確保你使用編譯器附帶的string.h
,而不是本地系統。你得到了什麼連接錯誤?
聽起來像strstr
在libc
中缺少,這聽起來很奇怪,我沒有解釋它。如果您有權訪問設備上的庫,那麼我會檢查objdump -t
,如果它定義爲strstr
。
如何在這樣的設備上使用string.h中的函數?
它在過去對我有效。
這些頭文件是硬件特定的嗎?
使用NDK工具,它們是具體的體系結構和平臺(例如,Android 8,Android 14等)。
除非NDK中存在嚴重的錯誤(這似乎不太可能),否則我認爲您可能需要再次檢查構建。
我試圖重建代碼和strstr沒有給出任何錯誤,但這是錯誤:'無法找到'__strlen_chk'... CAN NOT LINK EXECUTABLE' – uncreative
我正在使用SDK開發 – uncreative
AFAIK,Android SDK沒有與其捆綁的C編譯器。這就是Android NDK的用途。 – ldav1s
- 1. 用R頭文件編譯C代碼
- 2. 用C++編譯器編譯c代碼
- 3. 如何用C頭文件和CUDA代碼編譯C代碼?
- 4. C++ - 預編譯頭文件
- 5. 用C++編譯器編譯C99文件
- 6. 以編程方式調用C#編譯器編譯C#代碼
- 7. 編譯C代碼與出.C文件
- 8. C代碼編譯
- 9. 編譯C代碼
- 10. C++頭文件#define編譯器錯誤
- 11. C編譯器找不到頭文件
- 12. 編譯頭文件
- 13. Microsoft Visual C++ Express編譯器是否編譯C代碼?
- 14. C++頭文件編譯器問題(Sales_item.h)C++頭文件示例
- 15. 編譯錯誤的代碼的編譯
- 16. 是否有編譯爲機器代碼的C C++ C#編譯器
- 17. 編譯C代碼爲C#
- 18. eclipse for android c源代碼 - 如何解決編譯頭文件?
- 19. 使用多個編譯器編譯C代碼
- 20. 在現代編譯器中編譯狡猾的Fortran 77代碼
- 21. 編譯器的條件隱藏代碼
- 22. gcc編譯器在編譯時查找頭文件在哪裏?
- 23. C代碼編譯錯誤
- 24. 腳本編譯C代碼
- 25. Msys編譯C代碼
- 26. C++代碼編譯錯誤
- 27. C代碼 - Pthread不編譯
- 28. C++代碼不能編譯
- 29. 無法編譯c代碼
- 30. C代碼編譯失敗
錯誤是什麼? –
我使用strstr()和錯誤是 無法鏈接strstr – uncreative
也從stdio.h和stdlib.h函數可以很容易和完美地使用 – uncreative