GCC创建共享对象而不是可执行二进制文件

我有一个正在建设的图书馆。 当我运行以下任何一个时,我的所有对象都会连续编译和链接: ar rcs lib/libryftts.a $^ gcc -shared $^ -o lib/libryftts.so 在我的Makefile中。 我也能够成功地将它们安装到/usr/local/lib当我用nm测试文件时,所有的function都在那里。 我的问题是当我运行gcc testing/test.c -lryftts -o test && file ./test或gcc testing/test.c lib/libryftts.a -o test && file ./test时说: test: ELF 64-bit LSB shared object而不是test: ELF 64-bit LSB executable正如我所料。 我究竟做错了什么?

如何从被调用的函数中更改调用函数中的变量?

应该如何修改try()函数(以及它的调用)以从下面的程序中获得11的输出? #include /* declare try() here */ int main(void) { int x = 10; try(); /* Call can change */ printf(“%d\n”, x); return 0; } void try() /* Signature can change */ { /* how to change x here?? */ }

C有引用吗?

C有引用吗? 即在C ++中: void foo(int &i)

C中的x509证书validation

我有DER和PEM格式的证书,我的目标是检索Issuer和Subject的字段,并使用CA公钥validation证书,同时使用根公钥validationCA证书。 我能够检索发行人和主题的所有细节,但无法validation证书。 使用的API: x509 = d2i_X509_fp (fp, &x509); //READING DER Format x509 = PEM_read_X509 (fp, &x509, NULL, NULL); //READING PEM Format //to retrieve the Subject: X509_NAME_oneline(X509_get_subject_name(x509), subject, sizeof (subject)); //to retrieve the Issuer: X509_NAME_oneline(X509_get_issuer_name(x509), issuer, sizeof (issuer)); //To store the CA public key (in unsigned char *key) that will be used to verify the //certificate […]

为什么scanf不需要字符串的&符号,也适用于printf(在C中)?

我现在正在学习C中的字符串。 如何使用scanf获取你可以做的字符串 scanf(“%s”,str1); 而对于printf你可以做到 printf(“The string is %s\n”, str1); 我理解,对于scanf来说,这是因为字符串只是一个字符数组,它是一个指针,但是对于printf,你怎么能像输入int或float一样放置变量名?

使用Memory BIO直接读/写握手数据

我需要创建一个OpenSSL连接,我可以直接读/写握手数据。 原因是握手数据将以UDP连接方式传输(DTLS不是一个选项,因为数据不是直接在数据报中,而是在另一个协议包内,如果你好奇则是EAP )。 到目前为止,我已经创建了一个OpenSSL连接,但我甚至无法读取客户端的握手以发送到服务器。 在我的研究中,我发现我需要一个Memory BIO来读取/写入连接,但无法弄清楚如何提取握手数据。 以下是我初始化客户端连接的方法: SSL_library_init(); SSL_load_error_strings(); OpenSSL_add_all_algorithms(); ctx = SSL_CTX_new(SSLv3_client_method()); SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, NULL); ssl = SSL_new(ctx); rbio = BIO_new(BIO_s_mem()); wbio = BIO_new(BIO_s_mem()); SSL_set_bio(ssl, rbio, wbio); SSL_set_connect_state(ssl); 我尝试过doint SSL_connect来启动握手: int ret = SSL_connect(ssl); 但返回-1 ,并执行SSL_get_error(ssl, res)我得到一个错误代码2 ,然后我用该代码执行ERR_error_string并得到: error:00000002:lib(0):func(0):system lib 此外,如果我使用SSL_do_handshake而不是SSL_connect我会得到完全相同的错误。 我已经能够通过TCP设置OpenSSL连接,但从未使用Memory BIO进行此操作,因此对此的任何帮助都将非常感激。 谢谢!

strrev()函数在Linux中不可用吗?

我尝试使用strrev()编写代码。 我包含了但我仍然得到一个“对strrev未定义引用”错误。 我发现strrev()根本没有手册页。 为什么? Linux不支持strrev()吗?

如何将整数值转换为罗马数字字符串?

如何将整数转换为C中罗马数字的String表示?

OpenCv 2.3 C – 如何隔离图像内的对象

我有一个像这样的图像: 我想删除数字周围的黑色行和列。 所以我想要的结果是: 我试试这个: void findX(IplImage* imgSrc,int* min, int* max){ int i; int minFound=0; CvMat data; CvScalar maxVal=cvRealScalar(imgSrc->width * 255); CvScalar val=cvRealScalar(0); //For each col sum, if sum < width*255 then we find the min //then continue to end to search the max, if sum< width*255 then is new max for (i=0; iwidth; i++){ cvGetCol(imgSrc, […]

使用%f打印整数变量

以下c程序的输出是:0.000000输出后面是否有逻辑或者是编译器依赖的答案还是我只是得到垃圾值? #include int main() { int x=10; printf(“%f”, x); return 0; } PS: – 我知道尝试使用%f打印整数值是愚蠢的。 我只是从理论的角度来问这个问题。