c - 来自 C 标准库的 mergesort() 的链接错误
问题描述
这是我的源文件,但是当我编译它时,我得到了对合并排序的未定义引用。
#include <lcthw/darray_algos.h>
#include <stdlib.h>
int DArray_qsort(DArray * array,DArray_compare cmp)
{
qsort(array->contents, DArray_count(array), sizeof(void *), cmp);
return 0;
}
int DArray_heapsort(DArray * array, DArray_compare cmp)
{
return heapsort(array->contents, DArray_count(array),
sizeof(void *), cmp);
}
int DArray_mergesort(DArray * array, DArray_compare cmp)
{
return mergesort(array->contents, DArray_count(array),
sizeof(void *), cmp);
}
我不知道如何正确链接 stdlib 排序函数我一直在使用这个通用的 makefile,但它似乎未能使 stdlib
CFLAGS=-g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG $(OPTFLAGS)
LDFLAGS=$(OPTLIBS)
PREFIX?=/usr/local
SOURCES=$(wildcard src/**/*.c src/*.c)
OBJECTS=$(patsubst %.c,%.o,$(SOURCES))
TEST_SRC=$(wildcard tests/*_tests.c)
TESTS=$(patsubst %.c,%,$(TEST_SRC))
TARGET=build/liblcthw.a
OS=$(shell lsb_release -si)
ifeq ($(OS),Ubuntu)
LDLIBS=-llcthw -lbsd -L./build -lm
endif
# The Target Build
all: $(TARGET) tests
dev: CFLAGS=-g -Wall -Isrc -Wall -Wextra $(OPTFLAGS)
dev: all
$(TARGET): CFLAGS += -fPIC
$(TARGET): build $(OBJECTS)
ar rcs $@ $(OBJECTS)
ranlib $@
build:
@mkdir -p build
@mkdir -p bin
解决方案
heapsort
并且mergesort
不是 C 中标准库的一部分。您应该查看 C++ 编译器以具有这些功能。
推荐阅读
- flutter - 使用颤振在本地保存值
- sql-server - 如何根据对命令提示符的响应使气流任务失败
- python - 为什么 date_range 给出的结果与 DataFrame Pandas 日期的索引 [] 不同?
- python - 如何有效地将 (start_time,[time_deltas]) 转换为 (start_time, end_time)?
- python - 熊猫的方式来增加出现次数
- angular - 删除 Angular 材料数据表 (Angular 7) 上循环行上的选定行
- javascript - jQuery Click Handler with Called Ajax Sub-Method 在 $(this).prop('disabled', true) 上有一个奇怪的延迟
- python - 缩放数据框中的字段
- c# - 如何使用“controller?action¶meters”路由实现 .NET WebAPI?
- typescript - 错误:CORS 策略:离子 4 中不存在“Access-Control-Allow-Origin”标头