Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

linker multiple definition of #1

Open
heikkipu opened this issue Nov 30, 2023 · 5 comments
Open

linker multiple definition of #1

heikkipu opened this issue Nov 30, 2023 · 5 comments

Comments

@heikkipu
Copy link

can you solve this:

/usr/bin/ld: parser.o:/home/heikki/pr/programs/A51/asm51-0.6/output.h:25: multiple definition of emit_pc'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/output.h:25: first defined here /usr/bin/ld: parser.o:/home/heikki/pr/programs/A51/asm51-0.6/output.h:23: multiple definition of pass'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/output.h:23: first defined here
/usr/bin/ld: parser.o:/home/heikki/pr/programs/A51/asm51-0.6/symbols.h:55: multiple definition of macros'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/symbols.h:55: first defined here /usr/bin/ld: parser.o:/home/heikki/pr/programs/A51/asm51-0.6/symbols.h:40: multiple definition of symbols'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/symbols.h:40: first defined here
/usr/bin/ld: parser.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:42: multiple definition of verbosity'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:42: first defined here /usr/bin/ld: parser.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:40: multiple definition of lineno'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:40: first defined here
/usr/bin/ld: parser.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:38: multiple definition of filename'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:38: first defined here /usr/bin/ld: parser.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:32: multiple definition of yyin'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:32: first defined here
/usr/bin/ld: lexer.o:/home/heikki/pr/programs/A51/asm51-0.6/lexer.c:330: multiple definition of yyin'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:32: first defined here /usr/bin/ld: lexer.o:/home/heikki/pr/programs/A51/asm51-0.6/output.h:23: multiple definition of pass'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/output.h:23: first defined here
/usr/bin/ld: lexer.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:38: multiple definition of filename'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:38: first defined here /usr/bin/ld: lexer.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:40: multiple definition of lineno'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:40: first defined here
/usr/bin/ld: lexer.o:/home/heikki/pr/programs/A51/asm51-0.6/output.h:25: multiple definition of emit_pc'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/output.h:25: first defined here /usr/bin/ld: lexer.o:/home/heikki/pr/programs/A51/asm51-0.6/symbols.h:55: multiple definition of macros'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/symbols.h:55: first defined here
/usr/bin/ld: lexer.o:/home/heikki/pr/programs/A51/asm51-0.6/symbols.h:40: multiple definition of symbols'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/symbols.h:40: first defined here /usr/bin/ld: lexer.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:42: multiple definition of verbosity'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:42: first defined here
/usr/bin/ld: xmalloc.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:42: multiple definition of verbosity'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:42: first defined here /usr/bin/ld: xmalloc.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:40: multiple definition of lineno'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:40: first defined here
/usr/bin/ld: xmalloc.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:38: multiple definition of filename'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:38: first defined here /usr/bin/ld: xmalloc.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:32: multiple definition of yyin'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:32: first defined here
/usr/bin/ld: output.o:/home/heikki/pr/programs/A51/asm51-0.6/output.h:25: multiple definition of emit_pc'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/output.h:25: first defined here /usr/bin/ld: output.o:/home/heikki/pr/programs/A51/asm51-0.6/output.h:23: multiple definition of pass'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/output.h:23: first defined here
/usr/bin/ld: output.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:42: multiple definition of verbosity'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:42: first defined here /usr/bin/ld: output.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:40: multiple definition of lineno'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:40: first defined here
/usr/bin/ld: output.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:38: multiple definition of filename'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:38: first defined here /usr/bin/ld: output.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:32: multiple definition of yyin'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:32: first defined here
/usr/bin/ld: symbols.o:/home/heikki/pr/programs/A51/asm51-0.6/symbols.h:40: multiple definition of symbols'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/symbols.h:40: first defined here /usr/bin/ld: symbols.o:/home/heikki/pr/programs/A51/asm51-0.6/symbols.h:55: multiple definition of macros'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/symbols.h:55: first defined here
/usr/bin/ld: symbols.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:42: multiple definition of verbosity'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:42: first defined here /usr/bin/ld: symbols.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:40: multiple definition of lineno'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:40: first defined here
/usr/bin/ld: symbols.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:38: multiple definition of filename'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:38: first defined here /usr/bin/ld: symbols.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:32: multiple definition of yyin'; main.o:/home/heikki/pr/programs/A51/asm51-0.6/main.h:32: first defined here

older machines did not do that, but new ones does.

@heikkipu
Copy link
Author

old version: GNU ld version 2.26.1-1.fc24
new version: GNU ld version 2.38-27.fc37

@heikkipu
Copy link
Author

Okey

gcc -Wl,--allow-multiple-definition main.o parser.o lexer.o xmalloc.o output.o symbols.o -o asm51

this is fast solution, but is it possible to put -Wl,--allow-multiple-definition somewhere in Makefile.

@heikkipu
Copy link
Author

Find place in Makefile, but is it right?

$(NAME): $(OBJS)
$(CC) -Wl,--allow-multiple-definition $(OBJS) -o $(NAME)

@wojtekka
Copy link
Owner

Thanks for the report. Instead of adding linker flags, I fixed the code. Plus it motivated me to do some quick cleanup. Could you check if the code from the main branch builds correctly now?

@heikkipu
Copy link
Author

heikkipu commented Dec 1, 2023

Now it seems to work perfectly. It was extern keyword what was solution I first try to solve it with static keyword. Now it is beautiful. Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants