專案中需要xenomai建立實時週期的任務,並封裝為動態鏈結庫,這裡記錄下遇到的問題。
按照 qt編譯xenomai使用者層程式 中的步驟設定,建立好動態庫工程之後。
編譯,會發生如下錯誤:
:-1: error: /usr/xenomai/lib/xenomai/bootstrap.o: relocation r_x86_64_32 against `.rodata.str1.1' can not be used when ****** a shared object; recompile with -fpic
提示編譯動態庫的時候需要加 -fpic標誌,新增如下:
xcflags = $(shell $$xeno_config -fpic --skin=alchemy --cflags)
xldflags = $(shell $$xeno_config -fpic --skin=alchemy --ldflags)
segmentation fault(core dumped)
發生了堆疊溢位。
幸好在xenomai論壇中有人碰到同樣的問題,
cannot create a share library linked against xenomai libs
xeno-config(1) manual page
--auto-init-solib
在編譯引數中新增 --auto-init-solib 標誌
xcflags = $(shell $$xeno_config --skin=alchemy --auto-init-solib --cflags)
xldflags = $(shell $$xeno_config --skin=alchemy --auto-init-solib --ldflags)
再次執行,成功! 建立和使用動態鏈結庫
在本演練中,您將建立乙個動態鏈結庫 dll 其中包含可供其他應用程式使用的有用例程。使用 dll 是一種重用 的絕佳方式。您不必在自己建立的每個程式中重新實現這些例程,而只需對這些例程編寫一次,然後從需要該功能的應用程式引用它們即可。本演練使用本機 c 有關使用本機 c 建立靜態庫的演練,請參見 演...
建立和使用動態鏈結庫 C
我們將建立的第一種型別的庫是動態鏈結庫 dll 使用 dll 是一種重用 的絕佳方式。您不必在自己建立的每個程式中重新實現同一例程,而只需對這些例程編寫一次,然後從需要該功能的應用程式引用它們即可。本演練涵蓋以下內容 本主題假定您具備 c 語言的基礎知識。從 檔案 選單中,選擇 新建 然後選擇 專案...
Qt建立和使用動態鏈結庫
一 建立共享庫 1 新其他建專案,選擇 c 庫 2 選擇共享庫,並取專案名稱,單擊下一步。這裡取名位mylib 3 按預設配置單擊下一步至模組選項,選擇所需支援的模組。這裡勾選qtcore 和qtgui。4 直接下一步至完成。現在乙個共享庫的工程就新建好了。5 右擊專案新增新檔案,選擇qt 設計師介...