构建无法执行的可执行文件

时间:2019-11-27 01:43:38

标签: gcc makefile exe

运行vk: command not found时得到vk,而执行bash: ./vk: No such file or directory时得到./vk

我做了一些研究,原因通常是它是64位计算机上的32位exe

make将输出构建到vk/_target。我cd到_target

当我运行file vk时,我会回来的。

  

vk:ELF 64位LSB可执行文件,x86-64,版本1(SYSV),动态链接,解释器/ lib / ld6,未剥离

我尝试执行chmod +x vkchmod u+x vk。我尝试了将./vkvkchmod一起键入的每种组合。我在这里茫然。我已经将-m64作为gcc的选项,但是这似乎是默认设置。

这是我的makefile文件

CFLAGS = -m64 -Wall -O3
CC = gcc
LINKER = ld -lc --entry main
DUMP = objdump
COPY = objcopy
TARGET_DIR = _target

SRCS := $(shell find ./ -name \*.c)
VPATH := $(sort $(dir $(SRCS)))
OBJS := $(patsubst %.c,$(TARGET_DIR)/%.o,$(notdir $(SRCS)))

$(TARGET_DIR)/vk : $(OBJS)
    $(LINKER) $^ -o $@
    $(DUMP) -D $@ > $(@:=.list)

$(TARGET_DIR)/%.o : %.c folders
    @echo "compiling $<"
    $(CC) $(CFLAGS) -c $< -o $@
    @echo "assembly dump $@"
    $(DUMP) -D $@ > $@.list

.PHONY: folders

folders:
    mkdir -p $(TARGET_DIR)

.PHONY: clean
clean:
    rm -rf $(TARGET_DIR)

0 个答案:

没有答案