Я не понимаю флаг g ++ -c. на основе определения: Скомпилируйте или соберите исходные файлы, но не связывайтесь. Шаг связывания просто не выполняется. Конечный результат представлен в виде объектного файла для каждого исходного файла. Мне нужна помощь, чтобы понять причину ошибки для следующего процесса сборки. Thanksошибка сборки, связанная с g ++ -c флагом
Я пытаюсь скомпилировать программу helloworld образца в затмении.
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!";
return 0;
}
без -c. затмение дает мне сообщение об ошибке:
make all
Building file: ../app.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -fmessage-length=0 -fPIC -MMD -MP -MF"app.d" -MT"app.d" -o "app.o" "../app.cpp"
Finished building: ../app.cpp
Building target: app.so
Invoking: GCC C++ Linker
g++ -shared -o "app.so" ./app.o
./app.o: In function `_fini':
(.fini+0x0): multiple definition of `_fini'
/usr/lib/gcc/x86_64-redhat-linux/4.6.3/../../../../lib64/crti.o:(.fini+0x0): first defined here
./app.o: In function `_init':
(.init+0x0): multiple definition of `_init'
/usr/lib/gcc/x86_64-redhat-linux/4.6.3/../../../../lib64/crti.o:(.init+0x0): first defined here
/usr/lib/gcc/x86_64-redhat-linux/4.6.3/crtendS.o:(.dtors+0x0): multiple definition of `__DTOR_END__'
./app.o:(.dtors+0x8): first defined here
/usr/bin/ld: warning: Cannot create .eh_frame_hdr section, --eh-frame-hdr ignored.
/usr/bin/ld: error in ./app.o(.eh_frame); no .eh_frame_hdr table will be created.
collect2: ld returned 1 exit status
make: *** [app.so] Error 1
11:25:49 Build Finished (took 463ms)
с -c, то строить отлично:
11:33:16 **** Incremental Build of configuration Debug for project app ****
make all
Building file: ../app.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"app.d" -MT"app.d" -o "app.o" "../app.cpp"
Finished building: ../app.cpp
Building target: app.so
Invoking: GCC C++ Linker
g++ -shared -o "app.so" ./app.o
Finished building target: app.so
11:33:16 отделка (взял 311ms)
нового исправления для создания исполняемого файла
13:32:44 **** Incremental Build of configuration Debug for project app ****
make all
Building file: ../app.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -fPIC -MMD -MP -MF"app.d" -MT"app.d" -o "app.o" "../app.cpp"
Finished building: ../app.cpp
Building target: app
Invoking: GCC C++ Linker
g++ -shared -o "app" ./app.o
Finished building target: app
В качестве бокового узла общая библиотека не должна содержать функцию main(). Обычно вы создаете функцию main() в своем приложении и связываете библиотеки в других целях. – nos
Oop, я просто нашел, что я установил его в режиме общей библиотеки случайно – cppython