c
Q446512799
linux、c、tuxedo、oracle、perl、python、postgres
展开
-
减小动态库大小及隐藏符号
gcc编译设置-fvisibility=hidden属性,则不加visibility声明的都默认为hidden(隐藏)。strip可以去除.symtab部分符号信息。原创 2022-09-06 10:09:14 · 622 阅读 · 1 评论 -
达梦数据库udf实现
官方介绍的很简单,其实有点小坑头文件引用库文件引用字符串拼接代码(函数名必须是大写,否则创建成功,调用报错【[-7095]:外部函数加载失败.】)编译生成动态库创建函数实际项目使用 注:因为c编写达梦udf走的是dmap代理(/dm/dmdbms/bin/dmap),所以首先需要启动代理。如果库依赖外部环境变量,需要在配置环境变量的控制台手工启动dmap,而不是在运行disql命令行控制台配置,否则环境变量不能正常识别。...原创 2022-07-05 10:26:53 · 1256 阅读 · 0 评论 -
c语言开发postgres自定义函数
#include<stdio.h>#include <stdlib.h>#include<string.h>#include "postgres.h"#include "fmgr.h"PG_MODULE_MAGIC;PG_FUNCTION_INFO_V1(decrypt_data);Datum decrypt_data(PG_FUNCTION_ARGS){ text *cipherdata = PG_GETARG_TEXT_P(0);.原创 2022-04-21 17:13:33 · 1741 阅读 · 0 评论 -
localtime函数影响性能
在一个业务逻辑中有存在多线程同时读写一块内存的情况,在流程设计上加了一个线程锁。后来在测试性能上通过其他方式限制了读写取消了锁,发现性能提升比较小,反复测试才发现流程中有调用localtime函数,去掉后性能有明显提升。/*获取系统当前时间(14位)*/int gettimenow(char *ctime){ struct tm *tp= NULL; time_t t; time( &t ); tp = (s...原创 2022-04-20 10:54:23 · 371 阅读 · 1 评论 -
Mac上制作通用静态库
仍以前文在Mac上编译openssl为例编译arm版本库./Configure darwin64-arm64-ccmake编译x86版本库./Configure darwin64-x86_64-ccmake合并两个版本的库lipo -create ./Arm64lib/libcrypto.a ./X8664lib/libcrypto.a -output libcrypto.alipo -create ./Arm64lib/libssl.a ./X8664lib/libss原创 2022-03-29 16:14:01 · 841 阅读 · 0 评论 -
m1芯片上编译arm64的openssl
配置只有darwin64-x86_64-cc,需要加上darwin64-arm64-cc。在Configurations/10-main.conf配置文件中找到darwin64-x86_64-cc配置部分在其下加入配置"darwin64-arm64-cc" => { inherit_from => [ "darwin-common", asm("aarch64_asm") ], CFLAGS => add("-Wall"), cflags原创 2022-03-18 15:11:07 · 1603 阅读 · 2 评论 -
Intel SGX线程锁
首先支持多线程,需要在config.xml文件中修改配置项//支持的线程数,应用线程数高于这个值会造成接口调用失败<TCSNum>10</TCSNum>线程头文件#include <sgx_thread.h>线程锁使用//申明sgx_thread_mutex_t sgxmut;//初始化sgx_thread_mutexattr_t unused;sgx_thread_mutex_init(&sgxmut,&unuse原创 2022-03-11 16:35:43 · 266 阅读 · 0 评论 -
Intel SGX开发入门
sgx定义文件*.edlenclave { /*引用外部.edl*/ from "sgx_tstdc.edl" import *; /*安全区函数接口定义*/ trusted { public int sgx_sdkinit([in,size=iplen] unsigned char *ip,size_t iplen,[in,size=portlen] unsigned char *port, size_t portlen); }; /*非安全区函数接口定义*/ untr原创 2022-03-07 15:55:14 · 758 阅读 · 0 评论 -
oracle使用c语言编写自定义函数
编写sm4gcmdecrypt函数并生成动态库libmyudftest.so#使用管理员加载动态库sqlplus / as sysdbaCREATE OR REPLACE LIBRARY libmyudftest AS '$ORACLE_HOME/bin/libmyudftest.so';/grant execute on libmyudftest to testuser;#使用普通用户创建udf函数sqlplus testuser/123456create or replace原创 2021-11-18 09:38:44 · 1197 阅读 · 0 评论 -
ocilib库连接oracle
源码路径:https://github.com/vrogier/ocilib通过修改ocilib实现拦截oracle数据加解密功能linux下编译:cdocilib-master./configure --prefix=安装路径make && make installwindows下编译:cdocilib-master\proj\dll打开ocilib_dll_vs2019.sln编译生成ocilib-master\lib64下库文件ociliba.d..原创 2021-10-20 17:44:36 · 256 阅读 · 0 评论 -
AIX6.1编译openssl
AIX6.1安装包下载地址:ftp://www.oss4aix.org/latest/aix61/(上次是在AIX7.1上编译的包,发现扔在6.1上跑不了,重新编译下)//缺啥包就下载安装啥包(安装上次7.1环境的gcc一直报头文件rid_t类型找不到,所以选择重新安装gcc)rpm -ivh gcc-4.9.3-1.aix6.1.ppc.rpm --nodepsrpm -ivh libgcc-4.9.3-1.aix6.1.ppc.rpm --nodepsrpm -ivh libstdc++原创 2021-09-23 10:13:18 · 434 阅读 · 0 评论 -
dlopen调用动态库
/*头文件*/#include<dlfcn.h>void *handle;handle = dlopen("libKeyDerive.so",RTLD_LAZY | RTLD_LOCAL | RTLD_DEEPBIND);if (!handle){ return ( -1 );}/*定义库中需要调用的接口*/typedef int (*https_client_batchpost)(char *info,int infolen,char *resp);ht.原创 2021-08-11 10:34:21 · 248 阅读 · 0 评论 -
mac上编译openssl及使用protobuf遇到问题及解决
mac上安装软件可以通过brew install安装编译openssl报错找不到malloc.h解决方法:将报错文件中#include <malloc.h>修改为#include <sys/malloc.h>The pkg-config script could not be found or is too old”brew install pkg-configconfigure: error: Package requirements (protobuf >原创 2021-06-09 11:12:07 · 581 阅读 · 2 评论 -
hp unix上编译openssl并使用
拿到手的环境perl是5.8.8,需要升级包下载地址:http://hpux.connect.org.uk/hppd/hpux/Languages/perl-5.10.1/解压后配置PATH环境变量后安装编译与其他机器一致./configmake在编译运行时遇到其他问题cc在编译是默认是32位,需要加入+DD64参数指定编译64位生产动态库命令是ld -b报各种常规函数比如strcmp等找不到,需要加入-ldl报Unsatisfied code symbol '_log'原创 2021-05-22 10:52:30 · 224 阅读 · 0 评论 -
AIX上安装gcc并使用
包的下载地址及安装命令:http://download.aixtools.net/gcc/aixtools.bash.4.3.33.0.aix537.Iaixtools.gmp.5.0.5.0.Iaixtools.mpfr.2.4.2.0.Iaixtools.mpc.1.0.2.0.Iaixtools.gettext.0.18.1.1.Iaixtools.gcc.4.7.4.0.aix537.Iinstallp -d . -aXc all期间遇到问题:ld:open(): A fi.原创 2021-05-22 10:44:10 · 1000 阅读 · 0 评论 -
python和go调用c动态库兼容linux和windows方法
python调用:import platformif platform.system() == 'Windows': SDK = cdll.LoadLibrary("./libkms_enc_sdk.dll")else: SDK = cdll.LoadLibrary("libkms_enc_sdk.so")go调用:/*#cgo CFLAGS: -I./#cgo linux LDFLAGS: -L../lib -lkms_enc_sdk#cgo windows LDFLAG原创 2021-04-22 10:12:00 · 225 阅读 · 0 评论 -
unicode转换utf8编码中文-c代码
#include<stdio.h>int main(){ long i =0; unsigned char tmp[4] = {0}; FILE *fp = NULL; fp = fopen("utf8.txt","w"); if (fp == NULL) { printf("open file err\n"); return (-1); } int count = 0; for (i=0x4e00;i<=0x9fa5;i++) { enc_.原创 2021-04-16 14:10:59 · 293 阅读 · 0 评论 -
程序获取系统glibc版本号
#include<stdio.h> #include<gnu/libc-version.h> int main(void){ printf("glibc version : %s \n",gnu_get_libc_version()); printf("__GLIBC__ = %d \n",__GLIBC__); printf(".转载 2021-03-01 17:15:06 · 182 阅读 · 0 评论 -
c语言grpc
安装见https://blog.csdn.net/linimbus/article/details/90720086testone.protosyntax = "proto3";package testone;service Greeter { rpc MyTestOne (HelloRequest) returns (HelloReply) {}}message HelloRequest { string name = 1;}message HelloReply {原创 2021-02-03 15:09:34 · 4237 阅读 · 13 评论 -
OSError: [WinError 127] 找不到指定的程序
windows下使用python3调用国密改造的openssl动态库报错,使用python2都是正常的,实在挺纳闷的。后来发现是python3下的DLLs路径下也存在libssl-1_1-x64.dll和libcrypto-1_1-x64.dll库文件,将里面的文件替换为改造后的文件后运行正常。...原创 2021-01-19 10:12:50 · 8597 阅读 · 6 评论 -
vs加载多个外部库编译报函数重定义解决
1>libciphersuite.lib(sm3.obj) : error LNK2005: sm3_init 已经在 libcrypto.lib(sm3.obj) 中定义1>libciphersuite.lib(sm3.obj) : error LNK2005: sm3_update 已经在 libcrypto.lib(sm3.obj) 中定义1>libciphersuite.lib(sm3.obj) : error LNK2005: sm3_final 已经在 libcrypto.原创 2020-12-14 17:40:54 · 616 阅读 · 0 评论 -
因为计算机中丢失MSVCR100.dll导致程序不能运行解决
windows server 2012 r2无法启动此程序,因为计算机中丢失MSVCR100.dll尝试了从其他机器拷贝MSVCR100.dll及注册dll,失败尝试了下载Microsoft的Visual C++ Redistributable for Visual Studio 2012 Update 4-vcredist_x64.exe安装,失败最后下载了Microsoft Runtimes AIO x86+x64-20180119.exe安装后成功...原创 2020-11-12 10:22:56 · 831 阅读 · 0 评论 -
windows下使用libcurl
curl_easy_perform返回1,unsupportedprotocol需要下载支持的libcurl(https://curl.haxx.se/windows/)curl_easy_perform返回60curl: (60) SSL certificate problem: unable to get local issuer certificateMore details here: https://curl.haxx.se/docs/sslcerts.htmlcurl ...原创 2020-09-22 10:18:05 · 329 阅读 · 0 评论 -
windows下编译libevent
下载libevent-2.1.11-stable.tar.gz包并解压修改以下文件,添加宏定义在以下3个文件开头添加“#define _WIN32_WINNT 0x0500”libevent-2.0.21-stable\event_iocp.clibevent-2.0.21-stable\evthread_win32.clibevent-2.0.21-stable\listener.c添加头文件引用在minheap-internal.h,加入 #include "stdint.h"不原创 2020-09-01 10:23:10 · 219 阅读 · 0 评论 -
openssl建立tls双向验证连接方法
版权声明:本文为CSDN博主「liyakai_cn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_41564401/article/details/80232783转载客户端如何基于tls建立加密通道/*客户端代码*/X509 *cert = NULL; // 客户端公钥证书指针EVP_PKEY *key = NULL; // 客户端私钥证书指针.转载 2020-07-22 16:53:39 · 817 阅读 · 0 评论 -
mtrace内存泄露检查工具
安装yum install glibc-utils增加头文件引用#include <mcheck.h>主函数中调用setenv("MALLOC_TRACE", "mtrace.out", 1);mtrace();编译gcc -g test.c -o test执行./test分析mtrace test mtrace.out...原创 2020-05-26 17:41:18 · 170 阅读 · 0 评论 -
python调用c动态库
import typesfrom ctypes import *def Sm4CbcEncrypt(source,key,iv): v = c_int(0) p_int = pointer(v) p = create_string_buffer(len(source) + 64) pconfig = addressof(p) SDK.Sm4CbcEncrypt(source,len(source),pconfig,p_int,key,iv) result = string_.原创 2020-05-21 11:51:26 · 146 阅读 · 0 评论 -
Cgo中unsigned char*类型的传递
ret := 0 key := []byte("1234567890abcdef") iv := []byte("1234567890abcdef") orig := []byte("hello world!") ret = Sm4CbcEncrypt(orig,cipherText,key,iv) ret = Sm4CbcDecrypt(cipherText[0:ret],plainText,key,iv) fmt.Println(string(plainText[0:ret]))..原创 2020-05-15 16:18:00 · 1901 阅读 · 3 评论 -
GO语言调用c动态库
test.h如下:#include<stdio.h>int add(int a,int b,char *name,int *c);test.c如下:#include "test.h"int add(int a,int b,char *name,int *c){ printf("-----name[%s]\n",name); me...原创 2020-05-08 15:23:07 · 370 阅读 · 0 评论 -
python调用c动态库
from ctypes import *library = cdll.LoadLibrary("/home/nxy/lib/libxxxxxxxx.so")library.init()library.fpeEmailEncrypt.argtypes = [c_char_p, c_char_p, c_char_p,c_char_p,c_int,c_char_p,POINTER(c_in...原创 2020-04-27 14:54:24 · 180 阅读 · 0 评论 -
centos上安装dpdk19.11
解压dpdk-19.11.tarcddpdk-19.11#RTE_SDK是代码顶层目录#RTE_TARGET是选择编译平台,这里是64位linux系统,使用gcc编译export RTE_SDK=/home/nxy/software/dpdk-19.11export RTE_TARGET=x86_64-native-linuxapp-gccsed -ri 's,(PMD_PCA...原创 2020-02-17 10:49:30 · 945 阅读 · 0 评论 -
c代码混淆
#include<stdio.h>#include<string.h>int my_test_fuction(int a,int b){ return a+b;}int main (){ printf("%d\n",my_test_fuction(3,5)); return ( 0 );}#include<stdio.h&...原创 2020-01-07 10:23:29 · 1617 阅读 · 0 评论 -
c语言获取本机IP及通过pid获取进程名称
#include<stdio.h>#include <stdlib.h>#include<time.h>#include <ifaddrs.h>#include <sys/socket.h>#include <netdb.h>/*获取本机IP*/int gethostip(char *hostip);/*...原创 2019-11-29 17:03:26 · 441 阅读 · 0 评论