Closed kdknigga closed 2 years ago
That is interesting - I was able to reproduce this and after removing the test files this is still happeneing. I am not sure why this is happening. This will take a bit of time.
Am Mon, Oct 25, 2021 at 08:41:02AM -0700 schrieb Kris Knigga:
Hello,
I'm trying to build on Fedora 34 (cmake version 3.20.5, gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) and I'm getting a lot of messages about "multiple definition of `opuscodec'" and then the build fails.
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required): Compatibility with CMake < 2.8.12 will be removed from a future version of CMake. Update the VERSION argument <min> value or use a ...<max> suffix to tell CMake that the project does not need compatibility with older versions. -- The C compiler identification is GNU 11.2.1 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Found ALSA: /usr/lib64/libasound.so (found version "1.2.5.1") -- Configuring done -- Generating done -- Build files have been written to: /home/kris/git/snapcastc/build [ 20%] Building C object src/CMakeFiles/common_libs.dir/util.c.o [ 20%] Building C object src/CMakeFiles/server_deps.dir/clientmgr.c.o [ 20%] Building C object src/CMakeFiles/client_deps.dir/alsaplayer.c.o [ 20%] Building C object src/CMakeFiles/client_deps.dir/intercom_client.c.o [ 20%] Building C object src/CMakeFiles/server_deps.dir/intercom_srv.c.o [ 24%] Building C object src/CMakeFiles/common_libs.dir/taskqueue.c.o [ 28%] Building C object src/CMakeFiles/server_deps.dir/inputpipe.c.o [ 32%] Building C object src/CMakeFiles/client_deps.dir/pqueue.c.o [ 36%] Building C object src/CMakeFiles/common_libs.dir/timespec.c.o [ 40%] Building C object src/CMakeFiles/common_libs.dir/vector.c.o [ 40%] Built target client_deps [ 44%] Building C object src/CMakeFiles/common_libs.dir/syscallwrappers.c.o [ 48%] Building C object src/CMakeFiles/common_libs.dir/intercom.c.o [ 52%] Building C object src/CMakeFiles/server_deps.dir/socket.c.o [ 56%] Building C object src/CMakeFiles/common_libs.dir/pcmchunk.c.o [ 60%] Building C object src/CMakeFiles/common_libs.dir/opuscodec.c.o [ 64%] Building C object src/CMakeFiles/server_deps.dir/jsonrpc.c.o [ 68%] Building C object src/CMakeFiles/server_deps.dir/stream.c.o [ 68%] Built target common_libs [ 76%] Building C object src/CMakeFiles/snapcast-test-client.dir/client-test.c.o [ 76%] Building C object src/CMakeFiles/snapcast-client.dir/client.c.o [ 76%] Built target server_deps [ 84%] Building C object src/CMakeFiles/snapcast-server.dir/server.c.o [ 84%] Building C object src/CMakeFiles/snapcast-test-srv.dir/server-test.c.o [ 88%] Linking C executable snapcast-test-client [ 92%] Linking C executable snapcast-client /usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here [ 96%] Linking C executable snapcast-test-srv [100%] Linking C executable snapcast-server /usr/bin/ld: CMakeFiles/server_deps.dir/intercom_srv.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/clientmgr.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/inputpipe.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/socket.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/stream.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/intercom_srv.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/clientmgr.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/inputpipe.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/socket.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/stream.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here collect2: error: ld returned 1 exit status make[2]: *** [src/CMakeFiles/snapcast-test-client.dir/build.make:121: src/snapcast-test-client] Error 1 make[1]: *** [CMakeFiles/Makefile2:111: src/CMakeFiles/snapcast-test-client.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... collect2: error: ld returned 1 exit status make[2]: *** [src/CMakeFiles/snapcast-client.dir/build.make:121: src/snapcast-client] Error 1 make[1]: *** [CMakeFiles/Makefile2:244: src/CMakeFiles/snapcast-client.dir/all] Error 2 collect2: error: ld returned 1 exit status make[2]: *** [src/CMakeFiles/snapcast-test-srv.dir/build.make:127: src/snapcast-test-srv] Error 1 make[1]: *** [CMakeFiles/Makefile2:138: src/CMakeFiles/snapcast-test-srv.dir/all] Error 2 collect2: error: ld returned 1 exit status make[2]: *** [src/CMakeFiles/snapcast-server.dir/build.make:127: src/snapcast-server] Error 1 make[1]: *** [CMakeFiles/Makefile2:165: src/CMakeFiles/snapcast-server.dir/all] Error 2 make: *** [Makefile:136: all] Error 2 Consolidate compiler generated dependencies of target common_libs [ 32%] Built target common_libs Consolidate compiler generated dependencies of target client_deps [ 44%] Built target client_deps Consolidate compiler generated dependencies of target snapcast-test-client [ 48%] Linking C executable snapcast-test-client /usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here collect2: error: ld returned 1 exit status make[2]: *** [src/CMakeFiles/snapcast-test-client.dir/build.make:121: src/snapcast-test-client] Error 1 make[1]: *** [CMakeFiles/Makefile2:111: src/CMakeFiles/snapcast-test-client.dir/all] Error 2 make: *** [Makefile:136: all] Error 2
Any ideas what could be the problem? -- () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments
As a test, I also tried clang with the same result. I'll try to work backwards to figure out how old of a toolchain I need to make it work.
On Mon, Oct 25, 2021, 18:42 Christof Schulze @.***> wrote:
That is interesting - I was able to reproduce this and after removing the test files this is still happeneing. I am not sure why this is happening. This will take a bit of time.
Am Mon, Oct 25, 2021 at 08:41:02AM -0700 schrieb Kris Knigga:
Hello,
I'm trying to build on Fedora 34 (cmake version 3.20.5, gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) and I'm getting a lot of messages about "multiple definition of `opuscodec'" and then the build fails.
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required): Compatibility with CMake < 2.8.12 will be removed from a future version of CMake. Update the VERSION argument <min> value or use a ...<max> suffix to tell CMake that the project does not need compatibility with older versions. -- The C compiler identification is GNU 11.2.1 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Found ALSA: /usr/lib64/libasound.so (found version "1.2.5.1") -- Configuring done -- Generating done -- Build files have been written to: /home/kris/git/snapcastc/build [ 20%] Building C object src/CMakeFiles/common_libs.dir/util.c.o [ 20%] Building C object src/CMakeFiles/server_deps.dir/clientmgr.c.o [ 20%] Building C object src/CMakeFiles/client_deps.dir/alsaplayer.c.o [ 20%] Building C object src/CMakeFiles/client_deps.dir/intercom_client.c.o [ 20%] Building C object src/CMakeFiles/server_deps.dir/intercom_srv.c.o [ 24%] Building C object src/CMakeFiles/common_libs.dir/taskqueue.c.o [ 28%] Building C object src/CMakeFiles/server_deps.dir/inputpipe.c.o [ 32%] Building C object src/CMakeFiles/client_deps.dir/pqueue.c.o [ 36%] Building C object src/CMakeFiles/common_libs.dir/timespec.c.o [ 40%] Building C object src/CMakeFiles/common_libs.dir/vector.c.o [ 40%] Built target client_deps [ 44%] Building C object src/CMakeFiles/common_libs.dir/syscallwrappers.c.o [ 48%] Building C object src/CMakeFiles/common_libs.dir/intercom.c.o [ 52%] Building C object src/CMakeFiles/server_deps.dir/socket.c.o [ 56%] Building C object src/CMakeFiles/common_libs.dir/pcmchunk.c.o [ 60%] Building C object src/CMakeFiles/common_libs.dir/opuscodec.c.o [ 64%] Building C object src/CMakeFiles/server_deps.dir/jsonrpc.c.o [ 68%] Building C object src/CMakeFiles/server_deps.dir/stream.c.o [ 68%] Built target common_libs [ 76%] Building C object src/CMakeFiles/snapcast-test-client.dir/client-test.c.o [ 76%] Building C object src/CMakeFiles/snapcast-client.dir/client.c.o [ 76%] Built target server_deps [ 84%] Building C object src/CMakeFiles/snapcast-server.dir/server.c.o [ 84%] Building C object src/CMakeFiles/snapcast-test-srv.dir/server-test.c.o [ 88%] Linking C executable snapcast-test-client [ 92%] Linking C executable snapcast-client /usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-client.dir/client.c.o:(.bss+0x0): first defined here [ 96%] Linking C executable snapcast-test-srv [100%] Linking C executable snapcast-server /usr/bin/ld: CMakeFiles/server_deps.dir/intercom_srv.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/clientmgr.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/inputpipe.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/socket.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/stream.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-srv.dir/server-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/intercom_srv.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/clientmgr.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/inputpipe.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/socket.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/server_deps.dir/stream.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-server.dir/server.c.o:(.bss+0x0): first defined here collect2: error: ld returned 1 exit status make[2]: *** [src/CMakeFiles/snapcast-test-client.dir/build.make:121: src/snapcast-test-client] Error 1 make[1]: *** [CMakeFiles/Makefile2:111: src/CMakeFiles/snapcast-test-client.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... collect2: error: ld returned 1 exit status make[2]: *** [src/CMakeFiles/snapcast-client.dir/build.make:121: src/snapcast-client] Error 1 make[1]: *** [CMakeFiles/Makefile2:244: src/CMakeFiles/snapcast-client.dir/all] Error 2 collect2: error: ld returned 1 exit status make[2]: *** [src/CMakeFiles/snapcast-test-srv.dir/build.make:127: src/snapcast-test-srv] Error 1 make[1]: *** [CMakeFiles/Makefile2:138: src/CMakeFiles/snapcast-test-srv.dir/all] Error 2 collect2: error: ld returned 1 exit status make[2]: *** [src/CMakeFiles/snapcast-server.dir/build.make:127: src/snapcast-server] Error 1 make[1]: *** [CMakeFiles/Makefile2:165: src/CMakeFiles/snapcast-server.dir/all] Error 2 make: *** [Makefile:136: all] Error 2 Consolidate compiler generated dependencies of target common_libs [ 32%] Built target common_libs Consolidate compiler generated dependencies of target client_deps [ 44%] Built target client_deps Consolidate compiler generated dependencies of target snapcast-test-client [ 48%] Linking C executable snapcast-test-client /usr/bin/ld: CMakeFiles/client_deps.dir/intercom_client.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/client_deps.dir/alsaplayer.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/util.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/taskqueue.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/intercom.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/pcmchunk.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here /usr/bin/ld: CMakeFiles/common_libs.dir/opuscodec.c.o:(.bss+0x0): multiple definition of `opuscodec'; CMakeFiles/snapcast-test-client.dir/client-test.c.o:(.bss+0x0): first defined here collect2: error: ld returned 1 exit status make[2]: *** [src/CMakeFiles/snapcast-test-client.dir/build.make:121: src/snapcast-test-client] Error 1 make[1]: *** [CMakeFiles/Makefile2:111: src/CMakeFiles/snapcast-test-client.dir/all] Error 2 make: *** [Makefile:136: all] Error 2
Any ideas what could be the problem?
() ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/christf/snapcastc/issues/68#issuecomment-951423651, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADJX7QE5IKF2ZOOIKWR47ITUIXTPZANCNFSM5GVTF34Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
Ok, I think I found it.
If I go back to gcc 9 the compile works. I checked the changelog for gcc 10 (https://gcc.gnu.org/gcc-10/changes.html) and found this:
GCC now defaults to -fno-common. As a result, global variable accesses are more efficient on various targets. In C, global variables with multiple tentative definitions now result in linker errors. With -fcommon such definitions are silently merged during linking.
So, running cmake .. -DCMAKE_C_FLAGS="-fcommon"; make
seems to fix the issue.
Here's another way I've found that makes the compiler happy:
diff --git a/src/pcmchunk.c b/src/pcmchunk.c
index 02a1142..4d9698e 100644
--- a/src/pcmchunk.c
+++ b/src/pcmchunk.c
@@ -34,7 +34,7 @@ int chunk_getduration_ms(pcmChunk *chunk) {
bool chunk_is_empty(pcmChunk *c) { return !(c && c->play_at_tv_sec); }
bool chunk_decode(pcmChunk *c) {
- extern opuscodec_ctx opuscodec;
+ opuscodec_ctx opuscodec;
if (c && c->codec == CODEC_OPUS) {
decode_opus_handle(&opuscodec, c);
return true;
diff --git a/src/stream.h b/src/stream.h
index b6a4958..39e75fa 100644
--- a/src/stream.h
+++ b/src/stream.h
@@ -12,7 +12,7 @@ enum codec { PCM = 1, OPUS, INVALID };
enum protocol { PIPE = 1 };
// this will be used in the client for decoding
-opuscodec_ctx opuscodec;
+extern opuscodec_ctx opuscodec;
typedef struct {
int efd;
the first approach works. I have tested it locally. The second one does not work directly and may require more work as the client crashes:
eived 0.
chunk size is not equal to alsa init size - (re-)initializing with samples: 48000 sample size: 2, channels 2
Fatal (internal) error in ../src/opus_decoder.c, line 810: assertion failed: st->channels == 1 || st->channels == 2
I am not very happy with introducing such options but I will apply this for now to make the project build again. Thank you very much for digging through all this and coming up with two solutions!
Thank you very much for digging through all this and coming up with two solutions!
Well, one solution, at least. :) A solution that crashes isn't much of a solution. But maybe it's the first step towards a second solution.
Hello,
I'm trying to build on Fedora 34 (cmake version 3.20.5, gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), GNU ld version 2.35.2-6.fc34) and I'm getting a lot of messages about "multiple definition of `opuscodec'" and then the build fails.
Any ideas what could be the problem?