编译usb wifi驱动模块,报错cannot specify -o with -c or -S and multiple compilations

wesleyluo 2012-10-18 03:57:02
现在有一个usb wifi模块驱动,按照说明配置了makefile以后编译
一开始就报错arm-linux-gcc: cannot specify -o with -c or -S and multiple compilations
请问知道的说下这个是什么情况啊?

好像跟这个-c -o没有关系;

我看了makefile里面
编译的就是这一句
rt$(CHIPSET)sta.o: $(RT28XX_STA_OBJ)
$(LD) -r $^ -o $@
其中$(RT28XX_STA_OBJ)这个变量是多个.o文件名称,如: test1.o test2.o test3.o ;

请高手指点一下。。。

我怀疑是makefile配置错误,但是我真不知道在哪里错了。刚开始搞这个,折腾我两天了。

需要编译成linux2.4内核的驱动。
...全文
766 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wesleyluo 2012-10-18
  • 打赏
  • 举报
回复
这个有两级makefile,
第一级的makefile主要部分如下:
ifneq (,$(findstring 2.4,$(LINUX_SRC)))
cp -f os/linux/Makefile.4 $(RT28xx_DIR)/os/linux/Makefile
$(MAKE) -C $(RT28xx_DIR)/os/linux/
else
cp -f os/linux/Makefile.6 $(RT28xx_DIR)/os/linux/Makefile
$(MAKE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
endif
第二级的makefile在os/linux下面,主要就是我上面贴出来的部分。

我看好像都没有加-c啊。
wesleyluo 2012-10-18
  • 打赏
  • 举报
回复
//makefile文件的内容如下:

include $(RT28xx_DIR)/os/linux/config.mk


#ifdef CONFIG_STA_SUPPORT
ifeq ($(RT28xx_MODE), STA)
MOD_NAME = rt$(CHIPSET)sta
DAT_PATH = /etc/Wireless/RT$(CHIPSET_DAT)STA
DAT_FILE_NAME = RT$(CHIPSET_DAT)STA.dat
endif
#endif // CONFIG_STA_SUPPORT //



OBJ := $(MOD_NAME).o


RT28XX_STA_OBJ := \
$(RT28xx_DIR)/common/crypt_md5.o\
$(RT28xx_DIR)/common/crypt_sha2.o\
$(RT28xx_DIR)/common/crypt_hmac.o\
$(RT28xx_DIR)/common/crypt_aes.o\
$(RT28xx_DIR)/common/crypt_arc4.o\
$(RT28xx_DIR)/common/mlme.o\
$(RT28xx_DIR)/common/cmm_wep.o\
$(RT28xx_DIR)/common/action.o\
$(RT28xx_DIR)/common/cmm_data.o\
$(RT28xx_DIR)/common/rtmp_init.o\
$(RT28xx_DIR)/common/rtmp_init_inf.o\
$(RT28xx_DIR)/common/cmm_tkip.o\
$(RT28xx_DIR)/common/cmm_aes.o\
$(RT28xx_DIR)/common/cmm_sync.o\
$(RT28xx_DIR)/common/eeprom.o\
$(RT28xx_DIR)/common/cmm_sanity.o\
$(RT28xx_DIR)/common/cmm_info.o\
$(RT28xx_DIR)/common/cmm_cfg.o\
$(RT28xx_DIR)/common/cmm_wpa.o\
$(RT28xx_DIR)/common/dfs.o\
$(RT28xx_DIR)/common/spectrum.o\
$(RT28xx_DIR)/common/rtmp_timer.o\
$(RT28xx_DIR)/common/rt_channel.o\
$(RT28xx_DIR)/common/cmm_profile.o\
$(RT28xx_DIR)/common/cmm_asic.o\
$(RT28xx_DIR)/common/cmm_cmd.o\
$(RT28xx_DIR)/os/linux/rt_profile.o\
$(RT28xx_DIR)/chips/rtmp_chip.o\
$(RT28xx_DIR)/sta/assoc.o\
$(RT28xx_DIR)/sta/auth.o\
$(RT28xx_DIR)/sta/auth_rsp.o\
$(RT28xx_DIR)/sta/sync.o\
$(RT28xx_DIR)/sta/sanity.o\
$(RT28xx_DIR)/sta/rtmp_data.o\
$(RT28xx_DIR)/sta/connect.o\
$(RT28xx_DIR)/sta/wpa.o\
$(RT28xx_DIR)/sta/ags.o\
$(RT28xx_DIR)/sta/sta_cfg.o

PHONY := all release clean install uninstall

all:$(OBJ)

rt$(CHIPSET)sta.o: $(RT28XX_STA_OBJ)
$(LD) -r $^ -o $@

rt$(CHIPSET)ap.o: $(RT28XX_AP_OBJ)
$(LD) -r $^ -o $@

rt$(CHIPSET)apsta.o: $(RT28XX_APSTA_OBJ)
$(LD) -r $^ -o $@

release:
echo "MAKE Linux Station Code Release"

clean:
rm -f $(RT28xx_DIR)/common/*.o
rm -f $(RT28xx_DIR)/common/.*.{cmd,flags,d}
rm -f $(RT28xx_DIR)/os/linux/*.{o,ko,mod.{o,c}}
rm -f $(RT28xx_DIR)/os/linux/.*.{cmd,flags,d}
rm -fr $(RT28xx_DIR)/os/linux/.tmp_versions
rm -f $(RT28xx_DIR)/chips/*.o
rm -f $(RT28xx_DIR)/chips/.*.{cmd,flags,d}
ifeq ($(RT28xx_MODE),AP)
rm -f $(RT28xx_DIR)/ap/*.o
rm -f $(RT28xx_DIR)/ap/.*.{cmd,flags,d}
else
ifeq ($(RT28xx_MODE),STA)
rm -f $(RT28xx_DIR)/sta/*.o
rm -f $(RT28xx_DIR)/sta/.*.{cmd,flags,d}
else
ifeq ($(RT28xx_MODE),APSTA)
rm -f $(RT28xx_DIR)/ap/*.o
rm -f $(RT28xx_DIR)/ap/.*.{cmd,flags,d}
rm -f $(RT28xx_DIR)/sta/*.o
rm -f $(RT28xx_DIR)/sta/.*.{cmd,flags,d}
endif
endif
endif

install:
rm -rf $(DAT_PATH)
$(shell [ ! -f /etc/Wireless ] && mkdir /etc/Wireless)
mkdir $(DAT_PATH)
cp $(RT28xx_DIR)/$(DAT_FILE_NAME) $(DAT_PATH)/.
install -d $(LINUX_SRC_MODULE)
install -m 644 -c $(addsuffix .o,$(MOD_NAME)) $(LINUX_SRC_MODULE)
/sbin/depmod -a ${shell uname -r}

uninstall:
# rm -rf $(DAT_PATH)
rm -rf $(addprefix $(LINUX_SRC_MODULE),$(addsuffix .o,$(MOD_NAME)))
/sbin/depmod -a ${shell uname -r}

# Declare the contents of the .PHONY variable as phony. We keep that
# information in a variable so we can use it in if_changed and friends.
.PHONY: $(PHONY)

woshi_ziyu 2012-10-18
  • 打赏
  • 举报
回复
出现这个问题的原因是Makefile本身有-c选项。若是你在gcc 后面加 -o 这样就造成冲突。-c 和-o是对立的

贴一下MAKEFILE文件
lotas521 2012-10-18
  • 打赏
  • 举报
回复

-c 表示只编译不链接
-o 表示编译链接

不能同时开这两个选项

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧