Я знаю, что это очень часто задаваемый вопрос, и я действительно уже просмотрел все ответы, но не смог найти свою проблему и решение для нее.
Предисловие
Использование Cygwin Toolchain в CLion для создания 64-битной программы на C ++ работало как шарм.Никаких ошибок или чего бы то ни было.Затем я попытался сделать то же самое для 32-битной версии и быстро понял, что это гораздо сложнее понять.
CMakeList
Здесь я добавил флаг -m32
к ужеработающий CMakeLists.txt
# cmake_minimum_required(VERSION <specify CMake version here>)
project(my_program)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS -m32)
add_library(my_program SHARED library.cpp)
Затем я использовал CygWin для загрузки множества компиляторов c ++, просто чтобы убедиться, что у меня есть хотя бы один из них, который может работать.
Вот способ, которым я настраиваюэто для 32-битной сборки
После этого CMake
перестраивает файлы сборки, а затем я начал компилировать проект.
Появляются следующие сообщения об ошибках (усеченные, потому что все они на самом деле одинаковы, но с разными «отсутствующими» библиотеками, которые не могут быть найдены)
C:\Users\xetra11\.CLion2018.2\system\cygwin_cmake\bin\cmake.exe --build /cygdrive/c/Development/Github/CoopR-HQ-Extension/cmake-build-default --target all -- -j 10
[ 50%] Linking CXX shared library cygCoopR_HQ_Extension.dll
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/../../../../x86_64-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/7.3.0//libgcc_s.dll.a when searching for -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/../../../../x86_64-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/libgcc_s.dll.a when searching for -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/../../../../x86_64-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/7.3.0//libgcc_s.dll.a when searching for -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/../../../../x86_64-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/libgcc_s.dll.a when searching for -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/../../../../x86_64-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/7.3.0//libgcc.a when searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/../../../../x86_64-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/7.3.0//libgcc.a when searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/../../../../x86_64-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/libgcc.a when searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/../../../../x86_64-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/libgcc.a when searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/../../../../x86_64-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/7.3.0//libgcc.a when searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/../../../../x86_64-pc-cygwin/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/libgcc.a when searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lgcc
Используются компиляторы C ++ Это компиляторыЯ пытался использовать.Все они приводят к небольшим различным сообщениям об ошибках, но все объединены в разглагольствование для того, чтобы не найти библиотеку
Cygwin compilers :
- C: \ cygwin64 \ bin \x86_64-pc-cygwin-gcc.exe ( тот, который использовался в этом вопросе )
- C: \ cygwin64 \ bin \ x86_64-pc-cygwin-gcc-7.3.0.exe
- C: \ cygwin64 \ bin \ x86_64-pc-cygwin-g ++. Exe
- C: \ cygwin64 \ bin \ x86_64-pc-cygwin-c ++. Exe
- C: \ cygwin64 \ bin \ i686-pc-cygwin-c ++. exe ( неработающий CMake сгенерировал ошибки: ссылка )
- C: \ cygwin64 \ bin \ i686-pc-cygwin-cpp.exe ( не работает CMake сгенерировал ошибки: ссылка )
- C: \ cygwin64 \ bin \ i686-pc-cygwin-g ++. exe ( ошибка произошла: ссылка )
- C: \ cygwin64 \ bin \ i686-pc-cygwin-gcc-6.4.0.exe ( повреждено Ошибки броска CMake: ссылка )
- C: \ cygwin64 \ bin \ i686-pc-cygwin-gcc.exe ( сломано Ошибки броска CMake: ссылка )
MinGW компиляторы :
- C: \ cygwin64 \ bin \ x86_64-w64-mingw32-c ++. Exe
- C: \ cygwin64 \ bin \ x86_64-w64-mingw32-cpp.exe( неработающий CMake сгенерировал ошибки: ссылка )
- C: \ cygwin64 \ bin \ x86_64-w64-mingw32-g ++. Exe
- C:\ cygwin64 \ bin \ x86_64-w64-mingw32-gcc-6.4.0.exe
- C: \ cygwin64 \ bin \ x86_64-w64-mingw32-gcc.exe
- C: \ cygwin64\ bin \ i686-w64-mingw32-c ++. exe ( без ошибок )
Последний не выдал никаких ошибок, но при проверке .DLL с DependencyУокер Я обнаружил, что все связанные .DLLs к этому все еще полагаются на x64, и поэтому Error: Modules with different CPU types were found.
Я немного устали действительно был бы признателен за некоторые советы, как правильно построить этот материал.Я уже думаю, что понял тот факт, что мне нужно ввести 32-битные библиотеки.Но я не знаю, как и почему.Я предположил, что у цепочки инструментов есть это из коробки.
Пожалуйста, имейте в виду, что я довольно не привык к C ++ на окнах.