【问题标题】:C application wont be linked dynamicallyC 应用程序不会被动态链接
【发布时间】:2023-03-27 23:23:02
【问题描述】:

我有一个 C 应用程序:与 eclipse 动态链接的 FFT,但看到我使用的模拟器只处理静态链接的应用程序,我不得不在我的 Makefile 中添加“-static”标志,如下所示:

CC=gcc
CFLAGS=-g -static -c -Wall -O5 -mavx
LDFLAGS=

SOURCES=$ fft.c
OBJECTS=$(SOURCES:.c=.o)

EXECUTABLE=fft


all: $(TASKMAP) $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS) 
$(CC) $(LDFLAGS) $(OBJECTS) -lm -o $@

.c.o:
    $(CC) $(CFLAGS) $< -lm -o $@


clean: 
    rm -fr $(OBJECTS) $(EXECUTABLE)

通常静态链接应该可以工作,但是当我输入以下命令时:

:~/workspace/fft$ 文件 fft

我收到这条消息:

fft:ELF 64 位 LSB 可执行文件,x86-64,版本 1 (SYSV),动态链接(使用共享库),适用于 GNU/Linux 2.6.24,BuildID[sha1]=0xa499c8104f09cd85fbfbb33c75e51c606f117acf,未剥离

有人可以帮我解决这个问题吗?

【问题讨论】:

  • “我正在使用一个只处理静态链接应用程序的模拟器” 但是用你的主机 GCC 编译。什么模拟器?另外,我相当肯定-O5 不是一个固定的优化级别; -O3 是最高的。 SOURCES 列表中额外的 $ 是怎么回事?

标签: c


【解决方案1】:

您需要将-static 标志添加到LDFLAGS 部分。

CFLAGS 中也不需要 -static 标志。

【讨论】:

  • 我认为-static也可以从CFLAGS中删除。
  • 我确认:未知标志被忽略
  • @HolyBlackCat 编辑添加。谢谢。
猜你喜欢
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
相关资源
最近更新 更多