我有一個簡單的例子來測試我的IDE,準備好我的C++環境。 我目前在Ubuntu 14.04中使用Codeblocks 13.12。編譯C++使用-c
當我構建我的程序時,編譯器執行下面的代碼,並且程序在運行時會引發錯誤。
g++-4.8 -Wall -fexceptions -O3 -pedantic-errors -std=c++11 -Wextra -Wall -pthread -c /home/mikeldi/workspace/codeblocks/main.cpp -o obj/Debug/main.o
g++-4.8 -o bin/Debug/test obj/Debug/main.o
錯誤:
terminate called after throwing an instance of 'std::system_error'
what(): Unknown error -1
Aborted (core dumped)
在另一方面,如果我執行以下行(請注意,我不main.cpp中前使用-c)程序將沒有任何問題執行。
g++-4.8 -Wall -fexceptions -O3 -pedantic-errors -std=c++11 -Wextra -Wall -pthread main.cpp -o main
所以,我的問題是: 什麼是-c做,使程序無法正常工作? 是否有任何設置codeBlocks的方式,因此它不使用-c?
由於提前,
命令行中還有很多其他的區別,這些區別更可能是您的問題的競爭者 - 例如,在沒有工作的人中,你壓倒了體系結構(-march)。 '-c'不是你的問題;它只是將編譯和鏈接分成兩個獨立的步驟。 –
你已經沉迷於一個特定的國旗,然後決定,必須避免標誌__。相反,你需要它,它可能與這個問題無關。用你在這裏給我們看的_minimal testcase_重現問題。 –
更有可能的事實是,一個人有'-fexceptions',另一個沒有,特別是因爲崩潰信息涉及異常(或者說Alan覆蓋的拱門覆蓋)。 – PeterT