搜索
bottom↓
回复: 2
打印 上一主题 下一主题

如何修改make指令的参数(basename)

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2023-3-6 10:52:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,最近有一个关于在树莓派下做C开发的问题。
老外给了我一套程序,需要重新编译,其makefile 如下:

LIBS = -L . -lftd3xx
# Static link to D3XX library, please use Ubuntu 14.04 to compile
#LIBS = -L . -lftd3xx-static -lstdc++-static

ifneq ("$(wildcard ftd3xx.dll)","")
# === Windows ===
ifneq (,$(findstring PE32+,$(shell file ftd3xx.dll)))
        CROSS_COMPILE := x86_64-w64-mingw32-
else
        CROSS_COMPILE := i686-w64-mingw32-
endif
AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc-posix
CXX = $(CROSS_COMPILE)g++-posix
OBJDUMP = $(CROSS_COMPILE)objdump

DEMO0=streamer.exe
DEMO1=rw.exe
DEMO2=file_transfer.exe
DEMO3=asyncstreamer.exe
DEMO4=async-loopback.exe
DEMO5=FTD3xx_Notification.exe
CXXLIBS = -static -lstdc++
# === End of Windows ===
else
# === Linux & macOS ===
DEMO0=streamer
DEMO1=rw
DEMO2=file_transfer
DEMO3=asyncstreamer
DEMO4=async-loopback
DEMO5=FTD3xx_Notification
ifneq ("$(wildcard libftd3xx.dylib)","")
# == macOS ==
ARCH=-m64
CXXLIBS =-lc++
# == End of macOS ==
else
# == Linux ==
ifneq (,$(findstring 64-bit,$(shell file libftd3xx.so)))
ARCH=-m64
else
ARCH=-m32
endif
LIBS += -pthread -lrt
CXXLIBS = -lstdc++
# == End of Linux ==
endif
# === End of Linux & macOS ===
endif

COMMON_FLAGS = -ffunction-sections -fmerge-all-constants $(ARCH)
COMMON_CFLAGS = -g -O3 -Wall -Wextra $(COMMON_FLAGS)
CFLAGS = -std=c99  $(COMMON_CFLAGS) -D_POSIX_C_SOURCE
CXXFLAGS = -std=c++11 $(COMMON_CFLAGS)

all: $(DEMO0) $(DEMO1) $(DEMO2) $(DEMO3) $(DEMO4) $(DEMO5)
       
$(DEMO0): streamer.o
        $(CC) $(COMMON_FLAGS) -o $@ $^ $(CXXLIBS) $(LIBS)

$(DEMO1): rw.o
        $(CC) $(COMMON_FLAGS) -o $@ $^ $(LIBS)

$(DEMO2): file_transfer.o
        $(CC) $(COMMON_FLAGS) -o $@ $^ $(CXXLIBS) $(LIBS)

$(DEMO3): asyncstreamer.o
        $(CC) $(COMMON_FLAGS) -o $@ $^ $(CXXLIBS) $(LIBS)

$(DEMO4): async-loopback.o
        $(CC) $(COMMON_FLAGS) -o $@ $^ $(CXXLIBS) $(LIBS)

$(DEMO5): FTD3xx_Notification.o
        $(CC) $(COMMON_FLAGS) -o $@ $^ $(CXXLIBS) $(LIBS)

clean:
        -rm -f streamer.o rw.o file_transfer.o asyncstreamer.o async-loopback.o FTD3xx_Notification.o $(DEMO0) $(DEMO1) $(DEMO2) $(DEMO3) $(DEMO4) $(DEMO5)




当我运行make时,出现一个错误: g++: error: unrecognized command-line option '-m64'
我发邮件问老外,老外的答复是:
The same makefile is used for d2xx and d3xx for both Linux and Mac. To build d3xx, specify BASENAME=libftd3xx on the Make command line.

意思是说他们提供的 makefile是驱动d2xx和d3xx同时用在linux和mac系统,如果要编译d3xx,需要加入  BASENAME=libftd3xx到make命令参数行。

可是我查了相关资料,BASENAME本身就是一个指令啊,好像不是从属于make下。 还是说BASENAME这个要加入到上述makefile中?如果要修改makefile的话,怎么改呢?
现在一头雾水,想请教一下大家

出0入984汤圆

2
发表于 2023-3-6 11:22:56 | 只看该作者
本帖最后由 Himem 于 2023-3-6 11:25 编辑

把这段
  1. ifneq (,$(findstring 64-bit,$(shell file libftd3xx.so)))
  2. ARCH=-m64
  3. else
  4. ARCH=-m32
  5. endif
复制代码
删了就好了
当然我猜给的libftd3xx.so是x64架构不是arm的,去掉还有其他错

出0入0汤圆

3
 楼主| 发表于 2023-3-6 11:35:27 | 只看该作者
Himem 发表于 2023-3-6 11:22
把这段删了就好了
当然我猜给的libftd3xx.so是x64架构不是arm的,去掉还有其他错 ...
(引用自2楼)

谢谢大佬!!!!!!真的编译过了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 10:04

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表