C 语言编译错误:"multiple definition of..." 错误解决方法
"/usr/bin/ld: server.o: in function `handleClientRequest':\nserver.c:(.text+0x0): multiple definition of `handleClientRequest'; /tmp/ccGMWG5o.o:main.c:(.text+0x0): first defined here\n/usr/bin/ld: server.o: in function `handleTemperatureHumidity':\nserver.c:(.text+0x111): multiple definition of `handleTemperatureHumidity'; /tmp/ccGMWG5o.o:main.c:(.text+0x111): first defined here\n/usr/bin/ld: server.o: in function `getAdvice':\nserver.c:(.text+0x440): multiple definition of `getAdvice'; /tmp/ccGMWG5o.o:main.c:(.text+0x440): first defined here\n/usr/bin/ld: server.o: in function `sendResponse':\nserver.c:(.text+0x3e8): multiple definition of `sendResponse'; /tmp/ccGMWG5o.o:main.c:(.text+0x3e8): first defined here\ncollect2: error: ld returned 1 exit status"\n这个错误是由于在编译过程中出现了多个函数的多次定义导致的。解决方法是将函数定义放在一个单独的源文件中,并将该源文件与其他源文件进行编译和链接。\n\n具体步骤如下:\n\n1. 创建一个名为`functions.c`的新源文件,并将`handleClientRequest`,`handleTemperatureHumidity`,`getAdvice`和`sendResponse`函数的定义移动到该文件中。\n\n2. 修改`server.c`和`main.c`文件,删除这些函数的定义。保留函数的声明。\n\n3. 在命令行中使用以下命令编译和链接代码:\n\n\ngcc -c server.c\ngcc -c main.c\ngcc -c functions.c\ngcc -o program server.o main.o functions.o\n\n\n这将分别编译`server.c`,`main.c`和`functions.c`文件,并将生成的目标文件链接成一个可执行文件`program`。\n\n4. 运行可执行文件:\n\n\n./program\n\n\n这样就可以解决多次定义的问题,并成功编译和运行程序。
原文地址: https://www.cveoy.top/t/topic/qhzr 著作权归作者所有。请勿转载和采集!