gpt4 book ai didi

c - undefined symbol

转载 作者:太空宇宙 更新时间:2023-11-04 04:07:49 25 4
gpt4 key购买 nike

我收到了一个undefined symbol 错误,尽管我认为我已经正确定义了它。通过阅读其他帖子和谷歌搜索,链接器似乎无法找到合适的符号。我是 C 的新手,所以我确定我只是错过了一些愚蠢的东西。

glen-urbans-macbook-pro:everybit glurban$ make
gcc -O3 -DNDEBUG -std=c99 -Wall -Wstrict-prototypes -I. -m64 -DBUILD_64 -c bitarray.c -o bitarray.o
gcc -o everybit main.o ktiming.o bitarray.o tests.o -arch x86_64 -framework CoreServices
gcc -o everybit_harvey main.o ktiming.o bitarray_harvey.o tests.o -arch x86_64 -framework CoreServices
Undefined symbols:
"_bitarray_reverse", referenced from:
_test_reverse in tests.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [everybit_harvey] Error 1

在测试.c中:

#include "bitarray.h"
...

/* Peform a reversal operation on test_ba. */
static void testutil_reverse(size_t bit_off, size_t bit_len) {
assert(test_ba != NULL);
bitarray_reverse(test_ba, bit_off, bit_len);
if (test_verbose) {
bitarray_fprint(stdout, test_ba);
fprintf(stdout, " rotate off=%llu, len=%llu\n",
(unsigned long long) bit_off, (unsigned long long) bit_len);
}
}

static void test_reverse(void) {
testutil_frmstr("10000101");
testutil_reverse(0, 8);
testutil_expect("10100001", 4);
}

test_case_t test_cases[] = {
test_headerexamples,
test_8bit,
test_moreflips,
// ADD YOUR TEST CASES HERE
test_reverse,
NULL // This marks the end of all test cases. Don't change this!
};

在bitarray.c中,

/* Reverse a bit array */
void bitarray_reverse(bitarray_t *ba, size_t bit_off, size_t bit_len){
size_t tmp;
int i;
for(i = 0; i < bit_len/2; i++){
tmp = bitarray_get(ba, bit_off + i);
bitarray_set(ba, bit_off + i, bitarray_get(ba,bit_off + bit_len - 1 - i));
bitarray_set(ba, bit_off + bit_len - 1 - i, tmp);
}
}

在 bitarray.h 中:

void bitarray_reverse(bitarray_t *ba, size_t bit_off, size_t bit_len);

TIA

最佳答案

bitarray.o 被编译成目标文件everybit 但是这一行没有引用 everybit 因此 undefined symbol ...

gcc -o everybit_harvey main.o ktiming.o bitarray_harvey.o tests.o -arch x86_64 -framework CoreServices
Undefined symbols:
"_bitarray_reverse", referenced from:
_test_reverse in tests.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [everybit_harvey] Error 1

_harvey指的是什么?

关于c - undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3741877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com