德小SHUO 发表于 2020-3-2 13:01:08

【Socket】为什么用MinGW编译socket源码会报错而VS不会

本帖最后由 德小SHUO 于 2020-3-8 12:25 编辑

最近想搞一个局域网内用手机通过 socket 发送消息给电脑,然后电脑提示框弹出来消息内容的小程序。但是用 MinGW 编译网上的 socket 通信例程源码总是出现许多错误,不是缺少头文件就是某些看不懂的东西
因此赶来向各位技术宅求一个可以用 MinGW 编译的 socket 通信例程源码!尽量用C语言,C++我有点看不懂,至于为什么必须要用 MinGW ...我能说我电脑配置太垃圾
(注:3.8日看了《提问的智慧》一文之后深受启发,回来改了个标题)

0xAA55 发表于 2020-3-5 18:50:50

德小SHUO 发表于 2020-3-4 15:08
为什么用VS编译没问题,而用MinGW编译的时候会报错:
C:%users\ADMINI~1\AppData\Local\Temp\ccCMsguD.o: ...

链接命令行添加 -lws2_32 即可解决。

示例:

gcc hello.c -o hello.exe -lws2_32

顺带一提:请使用msys2或者wsl。请避免单独使用mingw,以及避免使用cygwin。

Golden Blonde 发表于 2020-3-3 04:17:38

https://www.0xaa55.com/thread-378-1-1.html

元始天尊 发表于 2020-3-3 09:46:19

哦,为啥用MinGW。MinGW和Cygwin都是用来模拟Linux环境的。他用做在Windows上模拟Linux,底层把Windows API封装成Linux命令和系统函数了。这样你可以像在Linux下那样使用命令和编程!!!
因此如果你连Linux都不会,那就没必要了。还不如用Visual Studio,用Windows API或者标准库来搞

搞Linux网络编程和搞Windows网络编程,本质没区别,大部分函数用法都一样。Windows自己加了很多库函数而已,所以说搞Linux网络编程比较”纯粹“
作为入门小菜的话,建议还是找Windows网络编程方面的文章吧

德小SHUO 发表于 2020-3-3 15:35:18

元始天尊 发表于 2020-3-3 09:46
哦,为啥用MinGW。MinGW和Cygwin都是用来模拟Linux环境的。他用做在Windows上模拟Linux,底层把Windows API ...

电脑配置的问题,VS体验太差!

德小SHUO 发表于 2020-3-3 15:36:51

美俪女神 发表于 2020-3-3 04:17
https://www.0xaa55.com/thread-378-1-1.html

谢谢大佬

元始天尊 发表于 2020-3-3 18:19:49

德小SHUO 发表于 2020-3-3 15:35
电脑配置的问题,VS体验太差!

那只能用VC6了

德小SHUO 发表于 2020-3-4 15:08:29

美俪女神 发表于 2020-3-3 04:17
https://www.0xaa55.com/thread-378-1-1.html

为什么用VS编译没问题,而用MinGW编译的时候会报错:
C:\Users\ADMINI~1\AppData\Local\Temp\ccCMsguD.o: In function `ErrOut':
e:/Develop/C/Socket.c:34: undefined reference to `__imp_WSAGetLastError'
C:\Users\ADMINI~1\AppData\Local\Temp\ccCMsguD.o: In function `InitWinsock':
e:/Develop/C/Socket.c:48: undefined reference to `__imp_WSAStartup'
C:\Users\ADMINI~1\AppData\Local\Temp\ccCMsguD.o: In function `ShutdownWinsock':
e:/Develop/C/Socket.c:66: undefined reference to `__imp_WSACleanup'
C:\Users\ADMINI~1\AppData\Local\Temp\ccCMsguD.o: In function `ReceiverThread':
e:/Develop/C/Socket.c:89: undefined reference to `__imp_htons'
e:/Develop/C/Socket.c:90: undefined reference to `__imp_htonl'
e:/Develop/C/Socket.c:91: undefined reference to `__imp_bind'
e:/Develop/C/Socket.c:99: undefined reference to `__imp_recvfrom'
e:/Develop/C/Socket.c:115: undefined reference to `__imp_recvfrom'
C:\Users\ADMINI~1\AppData\Local\Temp\ccCMsguD.o: In function `SignalProc':
e:/Develop/C/Socket.c:135: undefined reference to `__imp_htons'
e:/Develop/C/Socket.c:136: undefined reference to `__imp_htonl'
e:/Develop/C/Socket.c:137: undefined reference to `__imp_sendto'
C:\Users\ADMINI~1\AppData\Local\Temp\ccCMsguD.o: In function `main':
e:/Develop/C/Socket.c:167: undefined reference to `__imp_socket'
e:/Develop/C/Socket.c:188: undefined reference to `__imp_htons'
e:/Develop/C/Socket.c:189: undefined reference to `__imp_inet_addr'
e:/Develop/C/Socket.c:207: undefined reference to `__imp_sendto'
collect2.exe: error: ld returned 1 exit status

Ayala 发表于 2020-3-4 18:29:49

本帖最后由 Ayala 于 2020-3-4 18:39 编辑

德小SHUO 发表于 2020-3-4 15:08
为什么用VS编译没问题,而用MinGW编译的时候会报错:
C:%users\ADMINI~1\AppData\Local\Temp\ccCMsguD.o: ...

有点像调用约定的问题,或者包含lib的问题
先找一下工程的链接参数是否包含了ws2_32.lib,如果包含了,在文件中搜索下搜索一下WSAStartup
大概如下几种
_WSAStartup@8
__imp__WSAStartup@8
C WSAStartup
不过ws2_32.lib版本不同也不一样

amd64版本
WSAStartup
__imp_WSAStartup

德小SHUO 发表于 2020-3-4 19:14:01

Ayala 发表于 2020-3-4 18:29
有点像调用约定的问题,或者包含lib的问题
先找一下工程的链接参数是否包含了ws2_32.lib,如果包含了,在 ...

我算是个小白吧,我也看不懂
所以,版主大大,你看我这情况怎么解决呢

Ayala 发表于 2020-3-4 21:12:43

本帖最后由 Ayala 于 2020-3-4 21:17 编辑

德小SHUO 发表于 2020-3-4 19:14
我算是个小白吧,我也看不懂
所以,版主大大,你看我这情况怎么解决呢

我多少年没碰过MinGw了,你可以把你使用的MinGw版本告诉我一下我来编译一次看看

德小SHUO 发表于 2020-3-5 10:11:00

本帖最后由 德小SHUO 于 2020-3-5 10:15 编辑

Ayala 发表于 2020-3-4 21:12
我多少年没碰过MinGw了,你可以把你使用的MinGw版本告诉我一下我来编译一次看看 ...

我是照着这个安装的,用的是编译好的
https://blog.csdn.net/u012278016/article/details/101101486

Ayala 发表于 2020-3-5 19:05:05

0xAA55 发表于 2020-3-5 18:50
链接命令行添加 -lws2_32 即可解决。

示例:


好久不见。

0xAA55 发表于 2020-3-5 19:18:04

Ayala 发表于 2020-3-5 19:05
好久不见。

手上打石膏,干啥都费劲

music 发表于 2020-4-30 20:11:42

楼主的问题代码能发一下吗?我也遇到类似的问题。

music 发表于 2020-4-30 20:19:50

本帖最后由 chaw899 于 2020-4-30 20:24 编辑

0xAA55 发表于 2020-3-5 18:50
链接命令行添加 -lws2_32 即可解决。

示例:



Administrator@USER-20151226SM ~
$ cd /i/chd

Administrator@USER-20151226SM /i/chd
$ cd gawk-4.1.3

Administrator@USER-20151226SM /i/chd/gawk-4.1.3
$ make
make 'CFLAGS=-g -O2 -DNDEBUG' 'LDFLAGS=' all-recursive
make: Entering directory `/i/chd/gawk-4.1.3'
Making all in .
make: Entering directory `/i/chd/gawk-4.1.3'
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT array.o -MD -MP -MF .deps/array.Tpo -c -o array.
o array.c
mv -f .deps/array.Tpo .deps/array.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT awkgram.o -MD -MP -MF .deps/awkgram.Tpo -c -o aw
kgram.o awkgram.c
mv -f .deps/awkgram.Tpo .deps/awkgram.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT builtin.o -MD -MP -MF .deps/builtin.Tpo -c -o bu
iltin.o builtin.c
mv -f .deps/builtin.Tpo .deps/builtin.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT cint_array.o -MD -MP -MF .deps/cint_array.Tpo -c
-o cint_array.o cint_array.c
mv -f .deps/cint_array.Tpo .deps/cint_array.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT command.o -MD -MP -MF .deps/command.Tpo -c -o co
mmand.o command.c
mv -f .deps/command.Tpo .deps/command.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT debug.o -MD -MP -MF .deps/debug.Tpo -c -o debug.
o debug.c
debug.c: In function 'restart':
debug.c:2905:2: warning: passing argument 2 of 'execvp' from incompatible pointe
r type
execvp(d_argv, d_argv);
^
In file included from c:\mingw\include\unistd.h:13:0,
               from awk.h:169,
               from debug.c:26:
c:\mingw\include\process.h:120:42: note: expected 'const char * const*' but argu
ment is of type 'char **'
_CRTIMP intptr_t __cdecl __MINGW_NOTHROW execvp (const char*, const char* const
*);
                                          ^
mv -f .deps/debug.Tpo .deps/debug.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT dfa.o -MD -MP -MF .deps/dfa.Tpo -c -o dfa.o dfa.
c
mv -f .deps/dfa.Tpo .deps/dfa.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT eval.o -MD -MP -MF .deps/eval.Tpo -c -o eval.o e
val.c
mv -f .deps/eval.Tpo .deps/eval.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT ext.o -MD -MP -MF .deps/ext.Tpo -c -o ext.o ext.
c
mv -f .deps/ext.Tpo .deps/ext.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT field.o -MD -MP -MF .deps/field.Tpo -c -o field.
o field.c
mv -f .deps/field.Tpo .deps/field.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT floatcomp.o -MD -MP -MF .deps/floatcomp.Tpo -c -
o floatcomp.o floatcomp.c
mv -f .deps/floatcomp.Tpo .deps/floatcomp.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT gawkapi.o -MD -MP -MF .deps/gawkapi.Tpo -c -o ga
wkapi.o gawkapi.c
mv -f .deps/gawkapi.Tpo .deps/gawkapi.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT gawkmisc.o -MD -MP -MF .deps/gawkmisc.Tpo -c -o
gawkmisc.o gawkmisc.c
mv -f .deps/gawkmisc.Tpo .deps/gawkmisc.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT getopt.o -MD -MP -MF .deps/getopt.Tpo -c -o geto
pt.o getopt.c
mv -f .deps/getopt.Tpo .deps/getopt.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT getopt1.o -MD -MP -MF .deps/getopt1.Tpo -c -o ge
topt1.o getopt1.c
mv -f .deps/getopt1.Tpo .deps/getopt1.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT int_array.o -MD -MP -MF .deps/int_array.Tpo -c -
o int_array.o int_array.c
mv -f .deps/int_array.Tpo .deps/int_array.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT io.o -MD -MP -MF .deps/io.Tpo -c -o io.o io.c
io.c: In function 'two_way_open':
io.c:2077:13: warning: assignment makes pointer from integer without a cast [ena
bled by default]
      qcmd = quote_cmd(str), NULL);
             ^
io.c: In function 'gawk_popen':
io.c:2304:13: warning: assignment makes pointer from integer without a cast [ena
bled by default]
      qcmd = quote_cmd(cmd), NULL);
             ^
mv -f .deps/io.Tpo .deps/io.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o m
ain.c
mv -f .deps/main.Tpo .deps/main.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT mpfr.o -MD -MP -MF .deps/mpfr.Tpo -c -o mpfr.o m
pfr.c
mv -f .deps/mpfr.Tpo .deps/mpfr.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT msg.o -MD -MP -MF .deps/msg.Tpo -c -o msg.o msg.
c
mv -f .deps/msg.Tpo .deps/msg.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT node.o -MD -MP -MF .deps/node.Tpo -c -o node.o n
ode.c
mv -f .deps/node.Tpo .deps/node.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT profile.o -MD -MP -MF .deps/profile.Tpo -c -o pr
ofile.o profile.c
mv -f .deps/profile.Tpo .deps/profile.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT random.o -MD -MP -MF .deps/random.Tpo -c -o rand
om.o random.c
mv -f .deps/random.Tpo .deps/random.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT re.o -MD -MP -MF .deps/re.Tpo -c -o re.o re.c
mv -f .deps/re.Tpo .deps/re.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT regex.o -MD -MP -MF .deps/regex.Tpo -c -o regex.
o regex.c
mv -f .deps/regex.Tpo .deps/regex.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT replace.o -MD -MP -MF .deps/replace.Tpo -c -o re
place.o replace.c
mv -f .deps/replace.Tpo .deps/replace.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT str_array.o -MD -MP -MF .deps/str_array.Tpo -c -
o str_array.o str_array.c
mv -f .deps/str_array.Tpo .deps/str_array.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT symbol.o -MD -MP -MF .deps/symbol.Tpo -c -o symb
ol.o symbol.c
mv -f .deps/symbol.Tpo .deps/symbol.Po
gcc -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\""
-DSHLIBEXT="\"dll"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/local
e"' -I.   -g -O2 -DNDEBUG -MT version.o -MD -MP -MF .deps/version.Tpo -c -o ve
rsion.o version.c
mv -f .deps/version.Tpo .deps/version.Po
gcc-g -O2 -DNDEBUG   -o gawk.exe array.o awkgram.o builtin.o cint_array.o comm
and.o debug.o dfa.o eval.o ext.o field.o floatcomp.o gawkapi.o gawkmisc.o getopt
.o getopt1.o int_array.o io.o main.o mpfr.o msg.o node.o profile.o random.o re.o
regex.o replace.o str_array.o symbol.o version.o
replace.o: In function `setenv':
i:\chd\gawk-4.1.3/missing_d/setenv.c:78: multiple definition of `setenv'
gawkmisc.o:i:\chd\gawk-4.1.3/pc/gawkmisc.pc:559: first defined here
replace.o: In function `unsetenv':
i:\chd\gawk-4.1.3/missing_d/setenv.c:131: multiple definition of `unsetenv'
gawkmisc.o:i:\chd\gawk-4.1.3/pc/gawkmisc.pc:580: first defined here
io.o: In function `read_with_timeout':
i:\chd\gawk-4.1.3/io.c:3911: undefined reference to `valid_socket'
i:\chd\gawk-4.1.3/io.c:3931: undefined reference to `select@20'
i:\chd\gawk-4.1.3/io.c:3934: undefined reference to `__WSAFDIsSet@8'
io.o: In function `gawk_fclose':
i:\chd\gawk-4.1.3/io.c:3986: undefined reference to `valid_socket'
i:\chd\gawk-4.1.3/io.c:3992: undefined reference to `closesocket@4'
io.o: In function `gawk_popen':
i:\chd\gawk-4.1.3/io.c:2304: undefined reference to `quote_cmd'
io.o: In function `two_way_open':
i:\chd\gawk-4.1.3/io.c:2077: undefined reference to `quote_cmd'
i:\chd\gawk-4.1.3/io.c:2168: undefined reference to `kill'
main.o: In function `load_procinfo':
i:\chd\gawk-4.1.3/main.c:948: undefined reference to `getpgrp'
i:\chd\gawk-4.1.3/main.c:960: undefined reference to `getppid'
i:\chd\gawk-4.1.3/main.c:963: undefined reference to `getuid'
i:\chd\gawk-4.1.3/main.c:966: undefined reference to `geteuid'
i:\chd\gawk-4.1.3/main.c:969: undefined reference to `getgid'
i:\chd\gawk-4.1.3/main.c:972: undefined reference to `getegid'
collect2.exe: error: ld returned 1 exit status
make: *** Error 1
make: Leaving directory `/i/chd/gawk-4.1.3'
make: *** Error 1
make: Leaving directory `/i/chd/gawk-4.1.3'
make: *** Error 2

Administrator@USER-20151226SM /i/chd/gawk-4.1.3

我也遇到类似的问题,上面是报错信息,求解决方法。

=================================================


下面是遇到的2个问题,重复定义,缺少链接库。
目标文件,我已经全部编译出来了。

i:\chd\gawk-4.1.3/missing_d/setenv.c:78: multiple definition of `setenv'
gawkmisc.o:i:\chd\gawk-4.1.3/pc/gawkmisc.pc:559: first defined here
replace.o: In function `unsetenv':

Ink_Hin_fifteen 发表于 2020-5-13 19:57:53

xiaoxue1010 发表于 2020-5-4 16:09
哦,为啥用MinGW。广东快乐十分MinGW和Cygwin都是用来模拟Linux环境的。他用做在Windows上模拟Linux,江苏 ...

报告版主,发现外星人一枚。
哦,这个板块好像没有人管。
页: [1]
查看完整版本: 【Socket】为什么用MinGW编译socket源码会报错而VS不会