同樣的代碼, 同樣的makefile 文件
1)在mac 下順利編譯;
2)在新的ubuntu 下,編譯失敗;
報錯信息: string.h 中各種 函數(shù)找不到;
makefile:
代碼如下:
//[這是后來添加的
CL_HEADER := -I/usr/include/
CL_LIBS := -L/usr/lib/
//后來添加的]
clcp: main.o cl_string_utils.o cl_log.o
g++ ${CL_HEADER} ${CL_LIBS} -o clcp main.o cl_string_utils.o cl_log.o
main.o: main.cpp cl_string_utils.h
g++ ${CL_HEADER} ${CL_LIBS} -c main.cpp
cl_string_utils.o: cl_string_utils.cpp cl_log.h
g++ ${CL_HEADER} ${CL_LIBS} -c cl_string_utils.cpp
cl_log.o: cl_log.cpp cl_log.h
g++ ${CL_HEADER} ${CL_LIBS} -c cl_log.cpp
clean:
rm main.o clcp cl_string_utils.o cl_log.o
------------
報錯:
代碼如下:
cl_string_utils.cpp: In constructor ‘CL_StringBuilder::CL_StringBuilder()':
cl_string_utils.cpp:297:18: error: ‘memset' was not declared in this scope
memset(s,0,sz);
已經(jīng)做的嘗試:
在$PATH 中添加 頭文件路徑 /usr/include/ source 后, 仍然無法編譯通過;
最終找到的解決方案
1) memset 找不到問題: 在linux 下 使用 <string.h> 替換<string> 解決
2)printf 找不到問題:在linux 下 添加 頭文件<stdio.h> 解決;
問題 歸結為頭文件 問題; 而不是什么環(huán)境配置問題;
同一份 代碼 已經(jīng)在 mac ox 和 ubuntu 上完成編譯; 正常運行;因為代碼在mac 上寫的, 一致運行良好, 轉移到linux 上時, 就沒有考慮到 頭文件的問題;
以上就是本文的全部內(nèi)容了,希望大家能夠喜歡。
更多信息請查看IT技術專欄
2025國考·省考課程試聽報名