当前位置: 首页 > news >正文

RISC-V平台编译 state-thread x264 ffmpeg zlog

1.state-threads

源码下来之后 

直接 make linux-debug

目录下生成了对应的.a 和 .h文件 

gcc test.c -o test -l st -L .
 

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <errno.h>  
#include <sys/socket.h>  
#include <netinet/in.h>  
#include <st.h>  
  
#define BACKLOG 5  
#define IOBUFSIZE 8192
#define PORT 7474  

static void *handle_request(void *arg)
{
	st_netfd_t cli_nfd = (st_netfd_t) arg;
	struct pollfd pd;
	pd.fd = st_netfd_fileno(cli_nfd);
	pd.events = POLLIN;
	char buf[IOBUFSIZE];
	int nw, nr;
	for ( ; ; ) {
		/*pd.revents = 0;
		if (st_poll(&pd, 1, ST_UTIME_NO_TIMEOUT) <= 0) {
			printf("st_poll<=0\n");
			break;
		}*/
		//if (pd.revents & POLLIN) {			
			nr = (int) st_read(cli_nfd, buf, IOBUFSIZE, ST_UTIME_NO_TIMEOUT);
			if (nr <= 0)break;
			printf("[recv][%d] %s\n",nr,buf);     
			nw = st_write(cli_nfd, buf, nr, ST_UTIME_NO_TIMEOUT);
                        printf("[write] %d\n",nw);
			if (nw == nr)break;			
		//}
	} 
done:
	st_netfd_close(cli_nfd);
	return NULL;
} 

int main() {  
    int sock, client_fd;  
    struct sockaddr_in address;
	struct sockaddr_in cli_addr;
    socklen_t addrlen = sizeof(address);  
    st_netfd_t cli_nfd, srv_nfd;
    int n =0;
    // 初始化StateThreads库  
    if (st_init() != 0) {  
        perror("st_init");  
        return 0;  
    }  
	if ((sock = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
		printf("socket");
		exit(1);
	}
	n = 1;
	if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&n, sizeof(n)) < 0) {
		printf("setsockopt");
		exit(1);
	}
	// 绑定socket到端口  
    address.sin_family = AF_INET;  
    address.sin_addr.s_addr = INADDR_ANY;  
    address.sin_port = htons(PORT);  
	
	if (bind(sock, (struct sockaddr *)&address, sizeof(address)) < 0) {
		printf("bind");
		exit(1);
	}
	listen(sock, 128);
	if ((srv_nfd = st_netfd_open_socket(sock)) == NULL) {
		printf("st_netfd_open");
		exit(1);
	}
        printf("tcp srv start\n");
	for ( ; ; ) {
		n = sizeof(cli_addr);
		cli_nfd = st_accept(srv_nfd, (struct sockaddr *)&cli_addr, &n,ST_UTIME_NO_TIMEOUT);
		if (cli_nfd == NULL) {
			printf("st_accept\n");
			continue;
		}
		if (st_thread_create(handle_request, cli_nfd, 0, 0) == NULL) {
			printf("st_thread_create\n");
			continue;
		}
	}	
	close(sock); 
	st_netfd_close(srv_nfd);
	return 0;  
}  

用网络助手测试下正常

2.x264  

默认的官网的不支持risc-v平台  去下面链接下载支持此架构的

Jiayan Qian / x264-riscv-dev · GitLab (videolan.org)






 

./configure \
        --prefix=./ubuntu \
        --enable-static \
        --enable-shared \

 

如上图所示生成了对应的.a文件 和头文件

3.ffmpeg

 

执行 脚本 

 

打了一大串信息 

 

相关文章:

  • 分布式光纤传感:为生活编织“感知密网”
  • Node.js 中的 Event 模块详解
  • 【JavaEE进阶】Spring Boot日志
  • java断点调试(debug)
  • 人工智障的软件开发-自动流水线CI/CD篇-docker+jenkins部署之道
  • Spring Boot应用开发
  • C++:构造函数和析构函数
  • 机器学习--实现多元线性回归
  • 【重构谷粒商城】06:Maven快速入门教程
  • 【BUUCTF】[网鼎杯 2018]Comment
  • 通俗诠释 DeepSeek-V3 模型的 “671B” ,“37B”与 “128K”,用生活比喻帮你理解模型的秘密!
  • 【股票数据API接口25】如何获取最近10天历史成交分布数据之Python、Java等多种主流语言实例代码演示通过股票数据接口获取数据
  • 自己部署 DeepSeek 助力 Vue 开发:打造丝滑的折叠面板(Accordion)
  • 智能设备监控:AI 与 Python 助力设备管理的未来
  • 【Linux】Ubuntu Linux 系统——Python集成开发环境
  • 非线性动力学笔C5.2线性系统的分类
  • React使用 useImperativeHandle 自定义暴露给父组件的实例方法(包括依赖)
  • Deepseek实用万能提问模板
  • 【C语言】第一期——数据类型变量常量
  • 绕过information_schema;绕过Order by;seacmsv9实现联合注入数据
  • 青海省林业和草原局副局长旦增主动投案,正接受审查调查
  • 华侨城A:一季度营收53.63亿元,净利润亏损14.19亿元
  • 伊朗港口爆炸已致46人死亡
  • 春暖花开,为何皮肤却闹起了小情绪?
  • 人民时评:投资于人,促高质量充分就业
  • 媒体:每一个“被偷走的人生”,都该得到公道和正义