Ticket #13 (closed defect)
Opened 6 years ago
Last modified 5 years ago
Compiler Error with gcc 3.3.5: cannot specify -o with -c or
| Reported by: | anonymous | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Version: | ||
| Keywords: | Cc: | bagder | |
| Blocked By: | Blocks: |
Description
Gcc stops Compilation of libssh2-0.14 with error message
"cannot specify -o with -c or -S and multiple
compilations"
From the gcc manpage:
Since only one output file can be specified, it does
not make sense to use -o when compiling more than one
input file, unless you are producing an executable file
as output.
If -o is not specified, the default is to put an
executable file in a.out, the object file for
source.suffix in source.o, its assembler file in
source.s, and all preprocessed C source on standard output.
....
By default, the object file name for a source file is
made by replacing the suffix .c, .i, .s, etc., with .o.
so no -o flag is needed
Gcc also complains about:
/usr/include: linker input file unused because linking
not done
But that seems to be only cosmetical ...
All works fine when removing the -o <outfile>.o part
from the gcc command line when compiling without linking.
with kind regards
Harald Hellmuth <hh_at_hostserver.de>
Change History
comment:1 Changed 6 years ago by anonymous
comment:2 Changed 6 years ago by anonymous
Logged In: NO
Calling this in the top level directory of the untarred
sources will do the changes for you:
find . -name Makefile.in -exec \
perl -pi.bak -e 's/\$\(CC\)\s+-o\s+[\w_-]+?\.o/\$(CC)/' {} \;
with kind regards
Harald Hellmuth <hh_at_hostserver.de>

Logged In: NO
Hello.
I've been having the very same problem. How exactly can i
solve it? Where do i have to remove the "-o <outfile>.o
part"?
Thanks in advance.