1. ホーム
  2. g++

gcc コンパイラの外観の問題

2022-02-15 04:17:57

gcc コンパイラ -fpermissive での問題点

https://blog.csdn.net/lst227405/article/details/25975661

2014/05/16(月) 14:32:21  インランlst  読取数 11406

VS2010 でコンパイルしたプログラムを ARM プラットフォームに移植する場合

ARM-GCC経由のクロスコンパイルで-fpermissive問題が発生し、問題の説明は一時的な[-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/2.4.8/install/include/opencv2 -I/home/zed/opencv/2.4.8/install/include -L/home/zed/opencv/opencv-2.4.8/index/opencuv -I/home/zed/opencv/oppencv-2.4.8/index/opencv -I/home/zed/opencv/opencv-2.4.8/index/opencv -I/home/zed/opencv/oppencv-2.4.8/index/opencv 2 8/install/lib -lopencv_core -lopencv_imgproc - lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -L/lopencv_contrib -lopencv_highgui - lopencv_video -lopencv_videos -lopencv_videos -lopencv_videos -lopencv_videos 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/2.4.8/install/ include/opencv2 -I/home/zed/opencv/2.4.8/install/include -L/home/zed/opencv/2.4.8/index/opencv -L/home/zed/opencv/OPencv -L/opencv -L/opencv-2.4.8/install/include -L/home/zed/OPencv/OPencv-2.4.8/install/opencv -L/home/zed/opencv-2.4. 8/install/lib -lopencv_core -lopencv_ imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -L/lib -lopencv_core -lopencv_highgui -loopencv_ml -loopencv_video -loopencv_features2d -loopencv_calib3d lopencv_legacy -lopencv_flann -lopencv_gpu -lopencv_nonfree -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_videostab -lstdc++ - fpermissive -o xuanzhuan1 . /xuanzhuan.c は警告が出ますが、コンパイルして通過します。