9 Stimmen

G++-Compiler: Option -s ist veraltet und wird ignoriert C++

Ich versuche, ein sehr einfaches Programm in C++ mit dem g++-Compiler (4.6.0 auf Mac OSX) zu kompilieren und zu strippen. Aber beim Kompilieren bekomme ich eine Warnung.


Quellcode:

#include </usr/local/Cellar/gcc/4.6.0/gcc/include/c++/4.6.0/iostream>

int main(){
    std::cout << ("Hello World\n") ;
}

Terminal-Code:

g++ hello.cc -Wall -std=c++0x -s
    /* or an alternative: */
g++ hello.cc -Wall -std=c++0x -o test -Wl,-s

Compiler-Warnung:

ld: warning: option -s is obsolete and being ignored

Hat jemand eine Idee für diese seltsame Warnung?

Bearbeiten:

Das Seltsame ist die Größe hace verringert sich bei Verwendung des Flags -s von 9.216 auf 9.008 Bytes.

Wenn ich jedoch folgendes verwende, verringert sich die Größe auf 8.896 Bytes.

cp hello hello_stripped
strip hello_stripped

7voto

Keith Thompson Punkte 240701

Die Fehlermeldung stammt von ld , nicht von gcc ou g++ . (Die gcc y g++ Befehle sind ein Treiber, der den Compiler, den Linker und andere Werkzeuge aufruft).

gcc geht die -s Option für den Linker, wie in der gcc 4.6.1 Handbuch ; offenbar ist die MacOS-Portierung von gcc tut das immer noch.

Der GNU-Linker (GNU ld ) akzeptiert weiterhin die -s mit ihrer üblichen Bedeutung. Aber der MacOS-Linker (auch als ld ) ignoriert es, wie in der MacOS ld Handbuch :

-s Vollständiges Entfernen der Ausgabe, einschließlich Entfernen Diese Dateiformatvariante wird nicht mehr unterstützt. Diese Option ist veraltet.

Und die MacOS gcc Handbuch erwähnt im Gegensatz zum GNU gcc-Handbuch kein "-s".

2voto

Seth Carnegie Punkte 72029

Offensichtlich ist die -s ist obsolet. Sie können das strip stattdessen aber ein Programm.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X