Tag: undefined

在高山图像上构建lua-openssl时未定义引用“strerror_s”

我正试图像lua-openssl一样建立一个开放式的高山图像 FROM openresty/openresty:alpine-fat # Set the version ENV RESTY_CONFIG_OPTIONS_MORE “–with-ngx_http_ssl_module” EXPOSE 80 EXPOSE 443 RUN ls /usr/local/openresty/nginx/logs COPY lualib /usr/local/openresty/nginx/lualib RUN chown -R nobody:root /usr/local/openresty/nginx/lualib RUN apk add –update \ openssl openssl-dev \ lua5.3 luajit-dev lua-socket \ git RUN git clone https://github.com/zhaozg/lua-openssl.git /usr/local/lua-openssl; \ cd /usr/local/lua-openssl; \ git checkout e923252b28cff43add6382853cc85ed888c4474b; \ make 但我得到下面的那个和很多这样的错误: /usr/local/lua-openssl/deps/lua-compat/c-api/compat-5.3.c:74:对strerror_s’ ./libopenssl.a(cms.o): […]

无法将c代码链接到lapack / blas:未定义的引用

我已经尝试了几个小时,它让我发疯。 我得到的最后一个错误是: demo_cblas.c:(.text+0x83): undefined reference to `clapack_sgetrf’ demo_cblas.c:(.text+0xa3): undefined reference to `clapack_sgetri’ 我正在使用编译代码 /usr/bin/gcc -o demo_cblas demo_cblas.c -L /usr/lib64 -l :libgfortran.so.3 -L /usr/lib64 \ -llapack -L /usr/lib64 -lblas 我尝试使用和不使用libgfortran,使用不同的编译器gcc-33,gcc-47,gcc-48。 测试代码不是来自我,而是来自这个论坛…… #include #include #include #include “clapack.h” #include “cblas.h” void invertMatrix(float *a, unsigned int height){ int info, ipiv[height]; info = clapack_sgetrf(CblasColMajor, height, height, a, height, ipiv); info […]

如何在结构中引用未定义的类型是合法的?

作为回答另一个问题的一部分,我遇到了一段像这样的代码,gcc编译时没有抱怨。 typedef struct { struct xyz *z; } xyz; int main (void) { return 0; } 这是我一直用来构造指向自己的类型的方法(例如,链接列表),但我一直认为你必须命名结构,以便你可以使用自引用。 换句话说,您无法在结构中使用xyz *z ,因为此时typedef尚未完成。 但是这个特定的样本没有命名结构,它仍然编译。 我原本认为编译器中有一些黑魔法会自动翻译上面的代码,因为结构和typedef名称是相同的。 但是这个小小的美也可以: typedef struct { struct NOTHING_LIKE_xyz *z; } xyz; 我在这里想念的是什么? 这似乎是一个明显的违规,因为在任何地方都没有定义任何struct NOTHING_LIKE_xyz类型。 当我从指针更改为实际类型时,我得到预期的错误: typedef struct { struct NOTHING_LIKE_xyz z; } xyz; qqq.c:2: error: field `z’ has incomplete type 此外,当我删除struct ,我得到一个错误(解决parse error before “NOTHING […]

malloc undefined

我目前正在重写链表模块,我收到一些奇怪的错误。 在两个IDE(Netbeans和Visual Studio Express)中,我收到一个警告,即malloc未定义,并且我的linkedlist.c文件中找不到的函数也没有定义。 下面是我的3个文件。 main.c中 #include #include #include “linkedlist.h” int main(void){ struct linked_list * l_list; l_list = new_list(); printf(“%i”, l_list->length); getchar(); return (EXIT_SUCCESS); } linkedlist.h #ifndef LINKEDLIST_H #define LINKEDLIST_H struct linked_list{ int length; struct linked_list_node * head_node_ptr; }; struct linked_list_node{ struct linked_list_node * prev_node_ptr; struct linked_list_node * next_node_ptr; struct linked_list_data * head_data_ptr; }; struct […]

对于未设置的值,使用IEEE754浮点NaN是一个好主意吗?

对于非数学原因未定义的值,使用IEEE754浮点NaN(非数字)是一个好主意吗? 在我们的情况下,它们尚未设置,因为尚未从其他设备接收到值。 上下文是使用IEC1131 REAL32值的嵌入式系统。 编辑:编程语言是C,所以我们很可能使用来自C99的NAN和isnanf(x)。 虽然我们可能需要一些额外的扭曲来将这些扭曲到我们的操作系统兼容性层中。 编程语言中的默认设置似乎是初始化具有正零的浮点变量,其内部表示全为零。 这对我们来说是不可用的,因为0在有效值的范围内。 使用NaN似乎是一个干净的解决方案,但也许它比它的价值更麻烦,我们应该选择其他一些价值?

C – 是不确定的不确定值吗?

根据这篇文章 ,不确定的价值是: 3.17.2 1 indeterminate value either an unspecified value or a trap representation 根据谷歌的说法,不确定性的定义是: 不确定,已知或已建立 遗憾; 模糊。 根据字典,可确定的是: 能够被确定 根据merriam-webster,确定(在特定的上下文中)是: 通过调查,推理或计算找出或做出决定 因此,常识规定尽管在编译期间不确定值是未知的,但它在运行时是完全可确定的,例如,您总是可以读取占用该内存位置的任何事件。 或者我错了? 如果是这样,为什么? 编辑:为了澄清,我发布了与用户试图说服不确定值不确定的用户的激烈争论,我非常怀疑。 编辑2:澄清,通过“可确定”我并不意味着稳定或可用的值,即使它是未初始化的内存的垃圾值,仍然可以确定该垃圾的价值。 我的意思是试图确定这个价值仍然会产生一些价值,而不是……没有行动。 所以这个值必须来自一些内存,分配为仍然不确定的值的存储,我高度怀疑编译器实际上会使用一个随机数生成器只是为了提出一些任意值。

C中“对varName的未定义引用”是什么意思?

我有2个文件: ac和bc 在ac我向位于bc的function发送信号 signal(SIGUSR1,doSomething); 在ac文件的顶部,我有: extern void doSomething (int sig); 但是,当我编译时,我收到一个错误: /tmp/ccCw9Yun.o:在函数main’: ac:(.text+0xba): undefined reference to main’: ac:(.text+0xba): undefined reference to main’: ac:(.text+0xba): undefined reference to doSomething的main’: ac:(.text+0xba): undefined reference to ‘ collect2:ld返回1退出状态 包括以下标头: #include #include #include #include #include #include 我该如何解决?

c中对’getline’的未定义引用

我正在学习在C编程中使用getline,并尝试了http://crasseux.com/books/ctutorial/getline.html中的代码 #include #include #include int main(int atgc, char *argv[]) { int bytes_read = 1; int nbytes = 10; char *my_string; my_string = (char *)malloc(nbytes+1); puts(“Please enter a line of text”); bytes_read = getline(&my_string, &nbytes, stdin); if (bytes_read == -1) { puts (“ERROR!”); } else { puts (“You typed:”); puts (my_string); } return 0; } 但是,问题是编译器不断返回错误: […]

关于C – union中的union作为一种类型并且作为另一种类型读取的问题 – 是否已实现定义?

我正在阅读K&R中关于C的联合,据我所知,联合中的单个变量可以包含几种类型中的任何一种,如果某些东西存储为一种类型并且提取为另一种类型,则结果纯粹是实现定义的。 现在请检查以下代码段: #include int main(void) { union a { int i; char ch[2]; }; union au; u.ch[0] = 3; u.ch[1] = 2; printf(“%d %d %d\n”, u.ch[0], u.ch[1], ui); return 0; } 输出: 3 2 515 在这里,我在u.ch分配值,但是从u.ch和ui检索。 它是实现定义的吗? 或者我做的事情真的很傻? 我知道这对其他大多数人来说似乎很初学,但我无法弄清楚输出背后的原因。 谢谢。