Cómo proteger los propios derechos de propiedad intelectual y construir un foso de código: crear su propia biblioteca estática, ejemplos de plataformas x86 y arm

prefacio

(1) Imagine que si tuviéramos la suerte de escribir el código de una biblioteca de paquetes para construir un foso, nuestra empresa no estaría dispuesta a proporcionar el código real a los usuarios. Me temo que si el cliente toma el código, el contrato terminará, y si lo cambiamos un poco, nos robarán la tecnología y luego diremos que es una innovación completamente independiente. Eso fue realmente doloroso y difícil de describir.
(2) ¿Pero qué? Si no le da su código al cliente, el cliente no puede usarlo y usted necesita usarlo. Al final, empaquetará todo el proyecto. Entonces este supuesto cliente está ganando dinero sin hacer nada y usted está perdiendo demasiado, y no es nada realista.
(3) Por lo tanto, para proteger sus propios derechos de propiedad intelectual, también pueden brindar un servicio al cliente de manera obediente. Podemos construir una biblioteca estática nosotros mismos.

Cree una biblioteca estática en la plataforma x86

preparar el programa de prueba

programa de biblioteca estática

Aquí está el programa de biblioteca estática que preparé, solo se imprime una oración.

#include <stdio.h>

void mylib(void)
{
    
    
        printf("This is mylib!\r\n");
}

Programa de prueba

(1) Aquí está el programa de prueba, hay una declaración de función void mylib (void).
(2) Esta declaración de función también se puede colocar en un archivo de encabezado, y luego este archivo c incluye ese archivo de encabezado.
(3) Los estudiantes que no entienden explican que no comprenden lo suficiente el archivo de encabezado de **#include**. Puede consultar #include y los archivos de encabezado para obtener una comprensión profunda de los programas C, de modo que el proyecto C sólo tiene archivos .h (cabeza de perro)

void mylib(void);

int main(void)
{
    
    
        mylib();
        return 0;
}

(1) Cambie el archivo C a un archivo o

(1) Primero cambiemos el archivo c al idioma 01 y detengamos el enlace en el último paso.

gcc -c libtest.c

(2) Convierta el archivo o en una biblioteca estática

(1) Aquí usamos el comando ar para convertir el archivo .o en una biblioteca estática
(2)Nota: Se estipula que la biblioteca estática debe comenzar con lib y terminar con .a. ¡Esta es la regla!

ar cr libmylib.a libmylib.o

(3) Vincular el programa de prueba con la biblioteca estática

(1) Aquí usamos el comando ar para convertir el archivo .o en una biblioteca estática
(2) Cabe señalar aquí que -o indica el nombre de la salida final del archivo ejecutable. No es necesario escribir, entonces el archivo ejecutable final generado tiene el mismo nombre que el archivo c.
(3) -lmylib representa el nombre de la biblioteca estática.libmylib.a es el nombre del archivo de la biblioteca, elimine el comienzo de lib y mylib al final de .a es el nombre real de la biblioteca. Por lo tanto -l + nombre de la biblioteca.
(4) -L se usa para especificar la ruta de la biblioteca estática, y el último '.' indica que la biblioteca estática se encuentra en la ruta actual.

gcc -o test test.c -lmylib -L .

Crear una biblioteca estática debajo de la plataforma del brazo.

Determinar el compilador cruzado

(1) Primero necesita saber qué herramienta de compilación cruzada está utilizando. Es posible que algunos de ustedes hayan seguido el tutorial y ya hayan configurado la cadena de herramientas de compilación cruzada en su archivo .bashrc.
(2) Entonces necesitas ejecutar el siguiente comando

vim ~/.bashrc

(3) En este archivo, ingrese el siguiente comando para descubrir cuál es su propia cadena de herramientas de compilación cruzada.

/CROSS_COMPILE

inserte la descripción de la imagen aquí

Crear una biblioteca estática

(1) El procedimiento de prueba es el mismo que el anterior y el proceso de ejecución es el mismo. Es solo que antes de ejecutar las instrucciones gcc y ar, es necesario agregar una cadena de herramientas de compilación cruzada.

arm-buildroot-linux-gnueabihf-gcc -c libtest.c  //将C文件变成o文件
arm-buildroot-linux-gnueabihf-ar cr libmylib.a libmylib.o  //将o文件变成静态库
arm-buildroot-linux-gnueabihf-gcc -o test test.c -lmylib -L . //将测试程序与静态库链接

¿Cuáles son los beneficios de construir una biblioteca estática?

(1) Establecer una biblioteca estática puede proteger bien la privacidad del propio código y permitir que otros lo utilicen. Pero, ¿por qué es necesario crear la función de la biblioteca C como una biblioteca estática?
(2) ¿Hemos encontrado un problema? Si queremos ver la implementación subyacente de una función de la biblioteca C, muchas veces saltamos directamente a un archivo de encabezado y no se puede ver la implementación subyacente.
(3) Esto se debe a que la biblioteca C se ha compilado en una biblioteca estática. Dijimos anteriormente que la biblioteca estática puede proteger la privacidad de su propio código, pero ¿no es la biblioteca C de código abierto?
(4) Esto implicará el segundo beneficio de la biblioteca estática, que proporciona eficiencia de compilación.
(5) El código de la biblioteca estática ha pasado por el proceso de preprocesamiento, compilación y ensamblaje, y solo falta el enlace final. Si otros quieren utilizar la biblioteca C, pueden realizar directamente la operación de enlace en el último paso, mejorando efectivamente la eficiencia de la compilación.

Supongo que te gusta

Origin blog.csdn.net/qq_63922192/article/details/132479937
Recomendado
Clasificación