有关photon里面用socket进行网络通信的问题。

我在photon里面用socket 进行网络通信,可程序编译时出现如下错误:
undefined reference “socket”, “bind”, “listen”, “accept”.
这个问题在IDE里面也遇到了,可我知道在IDE里面,在common.mk里面加入socket library就可以了,可在photon里面我不知道在什么地方加入这个库,急切想知道这个答案,麻烦高手相告,谢谢!

我猜你的意思是在 phAB里? 反正不管在那里都有Makefile,就修改Makefile吧。

在Makefile里同样加入库libsocket(及-lsocket)就ok啦。

Makefile文件里面那么多内容,我在什么地方加libsocket 及-lsocket呢,麻烦您说详细点好吗?
为这个问题我都急了两天了。

不管那里有 -lph 的地方,加在它后面 :smiley:

看着这一天又过去了,可这个问题还是没有得到解决,这已经是第三天了。我已经快急疯了。我怎么就这么笨呢。你说让我再-lph后面加libsocket 及-lsocket,可无论我怎么加也不行呀。这是…/gcc_notx86里面的Makefile文件,你看看到底在什么地方加才可以呢。

Application Makefile

ifdef DBG
DBG_RELEASE = -O3 -fomit-frame-pointer
DBG_DEBUG = -O -gdwarf-2
DEBUG=$(DBG_$(DBG))
endif

ifndef DEBUG
DEBUG = -g
endif

ifndef OPTIM
OPTIM = -O
endif

include …/abOfiles
include …/indOfiles

include …/abSfiles
include …/indSfiles

include …/abHfiles
include …/indHfiles

include …/abWfiles
include …/abLfiles



PLATFORM=gcc_ntox86
PHABOPTS=

CC = qcc
CXX = qcc
LD = qcc

CFLAGS = -V$(PLATFORM) -w8 $(OPTIM) $(DEBUG) $(PHABOPTS) -I.
CXXFLAGS = $(CFLAGS)
LDFLAGS = -V$(PLATFORM) -Bstatic $(DEBUG) -l phexlib $(ABLIB) $(PHABOPTS)
SDFLAGS = -V$(PLATFORM) $(DEBUG) -l phexlib $(ABLIB) $(PHABOPTS)

VPATH = …

Application Program



shr: $(ABOBJ) $(MYOBJ)
$(LD) $(ABOBJ) $(MYOBJ) $(SDFLAGS) -M -o socket
usemsg socket …/Usemsg
phabbind socket $(ABMOD)

app: $(ABOBJ) $(MYOBJ)
$(LD) $(ABOBJ) $(MYOBJ) $(LDFLAGS) -M -o socket
usemsg socket …/Usemsg
phabbind socket $(ABMOD)

clean:
rm -f *.o *.err *.map socket

install:
-cp -vnf socket /usr/photon/bin

Headers



$(ABOBJ) $(MYOBJ): $(MYHDR)

Prototype Generation

proto:
-rm -f proto.h
approto -p $(ABSRC) $(MYSRC) > proto.h


希望给予指点。谢谢!

看着这一天又过去了,可是这个问题我还是没有得到解决。急呀。

你说在Makefile里面加入库libsocket 及-lsocket,可问题是,在Makefile里有那么多内容,在什么地方加入呢?如何加呢?

麻烦说详细点好吗?我真的很着急。
我把程序里面的./gcc_ntox86里面的Makefile给您,看在什么地方加,麻烦给予指点,好吗?
急等回复。

Application Makefile

ifdef DBG
DBG_RELEASE = -O3 -fomit-frame-pointer
DBG_DEBUG = -O -gdwarf-2
DEBUG=$(DBG_$(DBG))
endif

ifndef DEBUG
DEBUG = -g
endif

ifndef OPTIM
OPTIM = -O
endif

include …/abOfiles
include …/indOfiles

include …/abSfiles
include …/indSfiles

include …/abHfiles
include …/indHfiles

include …/abWfiles
include …/abLfiles



PLATFORM=gcc_ntox86
PHABOPTS=

CC = qcc
CXX = qcc
LD = qcc

CFLAGS = -V$(PLATFORM) -w8 $(OPTIM) $(DEBUG) $(PHABOPTS) -I.
CXXFLAGS = $(CFLAGS)
LDFLAGS = -V$(PLATFORM) -Bstatic $(DEBUG) -l phexlib $(ABLIB) $(PHABOPTS)
SDFLAGS = -V$(PLATFORM) $(DEBUG) -l phexlib $(ABLIB) $(PHABOPTS)

VPATH = …

Application Program



shr: $(ABOBJ) $(MYOBJ)
$(LD) $(ABOBJ) $(MYOBJ) $(SDFLAGS) -M -o socket
usemsg socket …/Usemsg
phabbind socket $(ABMOD)

app: $(ABOBJ) $(MYOBJ)
$(LD) $(ABOBJ) $(MYOBJ) $(LDFLAGS) -M -o socket
usemsg socket …/Usemsg
phabbind socket $(ABMOD)

clean:
rm -f *.o *.err *.map socket

install:
-cp -vnf socket /usr/photon/bin

Headers



$(ABOBJ) $(MYOBJ): $(MYHDR)

Prototype Generation

proto:
-rm -f proto.h
approto -p $(ABSRC) $(MYSRC) > proto.h

LDFLAGS 和 SDFLAGS 的最后加 -lsocket 吧。

又,你的程序名也叫socket吗?

是的,我的程序名叫socket!

把SDFLAGS = -V$(PLATFORM) $(DEBUG) -l phexlib $(ABLIB) $(PHABOPTS)
改成
SDFLAGS = -V$(PLATFORM) $(DEBUG) -l phexlib $(ABLIB) $(PHABOPTS)

-lsocket就ok啦,我已经试过了

谢谢您!
搞定了。