gcc編譯器 出現 fpermissive的問題

2021-09-24 22:00:00 字數 1474 閱讀 4717

2023年05月16日 14:32:21 應瀾lst 閱讀數 11406

在vs2010下編譯通過的程式,移植到arm平台時

通過arm-gcc交叉編譯時出現-fpermissive問題,問題描述是taking address of temporary [-fpermissive]

查了一些資料,可能是不同編譯器或者新舊編譯器對於c++標準的不同解釋的結果

在gcc下對於模板繼承的規定與vs不同

有乙個簡單粗暴的解決辦法,就是在交叉編譯指令裡面加入-fpermissive這一條命令,讓模板**由出錯降為警告,從而編譯通過

例如剛開始時我的指令為

arm-xilinx-linux-gnueabi-g++ -i/home/zed/opencv/opencv-2.4.8/install/include/opencv -i/home/zed/opencv/opencv-2.4.8/install/include/opencv2 -i/home/zed/opencv/opencv-2.4.8/install/include -l/home/zed/opencv/opencv-2.4.8/install/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann  -lopencv_gpu -lopencv_nonfree -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_videostab -lstdc++ -o xuanzhuan1 ./xuanzhuan.c

編譯出錯,改為arm-xilinx-linux-gnueabi-g++ -i/home/zed/opencv/opencv-2.4.8/install/include/opencv -i/home/zed/opencv/opencv-2.4.8/install/include/opencv2 -i/home/zed/opencv/opencv-2.4.8/install/include -l/home/zed/opencv/opencv-2.4.8/install/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann  -lopencv_gpu -lopencv_nonfree -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_videostab -lstdc++ -fpermissive -o xuanzhuan1 ./xuanzhuan.c 雖然會有警告,但是可以編譯通過

gcc編譯器 出現 fpermissive的問題

在vs2010下編譯通過的程式,移植到arm平台時 通過arm gcc交叉編譯時出現 fpermissive問題,問題描述是taking address of temporary fpermissive 查了一些資料,可能是不同編譯器或者新舊編譯器對於c 標準的不同解釋的結果 在gcc下對於模板繼承...

gcc編譯器簡介

在linux中選擇gcc編譯器的原因是gcc執行效率高。gcc基本用法 gcc options filename 其中options為編譯選項。例子 執行指令 gcc hello.c 則對hello.c進行編譯,如果程式沒有語法錯誤,則產生可執行檔案a.out gcc預設檔名 執行可執行檔案指令 a...

gcc編譯器(二)

靜態庫 工程在呼叫靜態庫時,複製靜態庫源 加長,不節省程式空間字尾名.a 優點 編譯後不需要再依賴庫 以空間換時間 動態庫 工程建立對映關係,每次呼叫都需要去庫中載入,字尾名為.so 共享庫 程式輕便,便於公升級。小tips 所有程式執行都在記憶體中,硬碟只能儲存程式。靜態庫的建立 gcc c 原始...