我想構建共享庫(.so, .dylib)
with Makefile gcc。 我的庫有來自其他共享庫的引用(符號)(編譯爲共享的其他C項目庫)使用Makefile和gcc構建動態共享庫(.so,.dylib)
我有這樣的目錄結構:
/c/
/Project1/...
/Project2/...
...
/unit_tests/...
/comparers/...
我試圖以編譯unit_test依賴於共享庫comparers共享庫做出這樣的事情:
$(SHARED_LIBRARY): assertion.o
$(CC) $(CFLAGS) -shared -o $(OUTPUT_LIB_DIR)/$(SHARED_LIBRARY) $(OUTPUT_DIR)/assertion.o $(COMPARERS_SHARED_LIB_PATH)
其中:
COMPARERS_SHARED_LIB_PATH= ../comparers/output/debug/lib/libcomparers.so
但是,如果使用靜態庫它不工作而不是編譯正確。爲什麼這不起作用以及如何使其正常工作?
UPDATE:錯誤信息
以上正確建立,但我認爲它在運行時產生的錯誤!當我鏈接以同樣的方式我可執行的目標也建立,但在運行時,它給出了這樣的錯誤消息:
dyld: Library not loaded: output/debug/lib/libcomparers.so
Referenced from: /Users/michzio/Developer/MyProjects/BachelorDegree/c/unit_tests/./output/debug/bin/unit_tests
Reason: image not found
Abort trap: 6
「它不起作用」?不是很有幫助... –
逐字地發佈錯誤消息。 –