![](/img/trans.png)
[英]how to include dll library with makefile, when using rcpp/rinside package
[英]Makefile not using include/library paths?
好吧,經過3個小時的研究,我即將瘋狂,所以我覺得是時候將它傳遞給一些新的眼睛了。
CXXFLAGS = -g -Wall
OBJS = main.o
PROG = test
INCLUDES = -I /usr/include/mysql -I /usr/local/include
LIBS = -L /usr/lib/mysql -l libmysqlclient.so.15.0.0 -L /usr/local/lib -l libmysqlpp.so.3.1.0
all: $(PROG)
${PROG}: $(OBJS)
$(CXX) $(INCLUDES) -o $(PROG) $(OBJS) $(LIBS)
clean:; $(RM) -f $(PROG) core *.o
包含路徑有問題,因為我在/ usr / include / mysql中明顯存在時會遇到mysql_version.h不存在的錯誤。
它說,檢查輸出的第一部分
g++ -g -Wall -c -o main.o main.cpp
這讓我覺得我在Makefile中格式化了一些錯誤的東西(由於額外的空格和缺少include / library路徑)。 但是,我查看了很多關於Makefile和g ++選項的手冊和文章......沒有進展。
我認為這應該是一個簡單的修復。 請幫忙(你感覺到我的絕望嗎?)。
另外,你認為有必要特別指定庫嗎? 我在XCode中運行這些東西很好,但我正在嘗試將代碼遷移到我的Web服務器...... Makefile已停止所有進度,我認為這是我應該學習的東西。
在makefile中,您已將include指令添加到鏈接階段,而不是編譯階段。
線條
${PROG}: $(OBJS)
$(CXX) $(INCLUDES) -o $(PROG) $(OBJS) $(LIBS)
假設通過調用$ {CXX}中的編譯器傳遞include文件夾(以及其他參數),從$ {OBJS}中的目標文件中創建$ {PROG}程序。 相反,對於您的變量部分,請執行以下操作:
INCLUDES = -I /usr/include/mysql -I /usr/local/include
CXXFLAGS = -g -Wall ${INCLUDES}
OBJS = main.o
PROG = test
LIBS = -L /usr/lib/mysql -l libmysqlclient.so.15.0.0 -L /usr/local/lib -l libmysqlpp.so.3.1.0
這樣,您的CXXFLAGS(用於編譯階段)現在應該拾取您的include指令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.