随笔记录
目录
1.背景
2. 编译
2.1 创建 .c 文件
2.2 编译->执行
1.背景
c文件在编译为可执行程序
2. 编译
2.1 创建 .c 文件
1已知c 文件源码,创建 .c 文件并编译为可执行程序 2 3 41. creat *.c 文件 5 6[root@localhost magx]# vim udp_nobind_sendto.c 7[root@localhost magx]# 8[root@localhost magx]# cat udp_nobind_sendto.c 9// Client side implementation of UDP client-server model 10#include <stdio.h> 11#include <stdlib.h> 12#include <unistd.h> 13#include <string.h> 14#include <sys/types.h> 15#include <sys/socket.h> 16#include <arpa/inet.h> 17#include <netinet/in.h> 18 19#define PORT 9000 20#define MAXLINE 1024 21 22// Driver code 23int main(int argc,char* argv[]) { 24 int sockfd; 25 char buffer[MAXLINE]; 26 char *hello = "Hello from client............................................."; 27 struct sockaddr_in servaddr; 28 struct sockaddr_in servaddr1; 29 struct sockaddr_in cli; 30 31 // Creating socket file descriptor 32 if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) { 33 perror("socket creation failed"); 34 exit(EXIT_FAILURE); 35 } 36 37 memset(&servaddr, 0, sizeof(servaddr)); 38 memset(&servaddr1, 0, sizeof(servaddr1)); 39 /* 40 // assign IP, PORT 41 cli.sin_family = AF_INET; 42 cli.sin_addr.s_addr = inet_addr("30.0.0.11"); 43 cli.sin_port = htons(PORT); 44 45 // Binding newly created socket to given IP and verification 46 if ((bind(sockfd, (struct sockaddr *)&cli, sizeof(servaddr))) != 0) 47 { 48 printf("socket bind failed...\n"); 49 } 50 else 51 { 52 printf("Socket successfully binded..\n"); 53 } 54 */ 55 printf("sleep ....\n"); 56 //sleep(1); 57 printf("sleep ...end\n"); 58 59 // Filling server information 60 servaddr.sin_family = AF_INET; 61 servaddr.sin_port = htons(PORT); 62 servaddr.sin_addr.s_addr = inet_addr("10.1.1.9"); 63 64 servaddr1.sin_family = AF_INET; 65 servaddr1.sin_port = htons(PORT); 66 servaddr1.sin_addr.s_addr = inet_addr("10.2.1.9"); 67 68 int n, len; 69 70 sendto(sockfd, (const char *)hello, strlen(hello), 71 MSG_CONFIRM, (const struct sockaddr *) &servaddr, 72 sizeof(servaddr)); 73 sendto(sockfd, (const char *)hello, strlen(hello), 74 MSG_CONFIRM, (const struct sockaddr *)&servaddr1, 75 sizeof(servaddr1)); 76 printf("Hello message sent.\n"); 77 78 n = recvfrom(sockfd, (char *)buffer, MAXLINE, 79 MSG_WAITALL, (struct sockaddr *) &servaddr, 80 &len); 81 buffer[n] = '\0'; 82 printf("Server : %s\n", buffer); 83 84 close(sockfd); 85 return 0; 86} 87 88[root@localhost magx]#
2.2 编译->执行
12. 为 .c 文件添加权限 2 3root@localhost magx]# ll 4total 4 5-rw------- 1 root root 1985 Nov 14 11:31 udp_nobind_sendto.c 6[root@localhost magx]# 7[root@localhost magx]# chmod u+x * 8[root@localhost magx]# ll 9total 4 10-rwx------ 1 root root 1985 Nov 14 11:31 udp_nobind_sendto.c 11[root@localhost magx]# 12 13 143. 编译 c文件为可执行程序 15# gcc -o <将 .c 文件编译未可执行程序文件名> <要编译 .c 文件> -lpthread 16 17e.g: #gcc -o udp_nobind_sendto udp_nobind_sendto.c -lpthread 18 19 20[root@localhost magx]# gcc -o udp_nobind_sendto udp_nobind_sendto.c -lpthread 21[root@localhost magx]# 22[root@localhost magx]# ll 23total 24 24-rwx------ 1 root root 17440 Nov 14 11:31 udp_nobind_sendto 25-rwx------ 1 root root 1985 Nov 14 11:31 udp_nobind_sendto.c 26[root@localhost magx]# 27 28 294. 执行 已编译.c 可执行文件 30# ./<执行 已编译.c 可执行文件名> [如果需要传参,再此处添加即可] 31e.g: ./udp_nobind_sendto 54321 32 33 34[root@localhost magx]# ./udp_nobind_sendto 54321 35sleep .... 36sleep ...end 37Hello message sent. 38
到此已完成 .c 文件编译

