Libobject
This lib is designed for object-oriented programming using c language.
Install / Use
/learn @a1an1in/LibobjectREADME
libobject
[TOC]
Intro
This library is designed for object-oriented programming using the C language. It currently contains core, net, concurrent, and ui (not completed) modules. Each module provides demos that are easy to understand and use.
Installation
Build Instructions
Linux
To build the project on Linux, you can specify the architecture or use the default (x86_64):
# Default architecture (x86_64)
./devops.sh build --platform=linux
# Specify architecture (x86_64 or arm)
./devops.sh build --platform=linux --arch=x86_64
./devops.sh build --platform=linux --arch=arm
The build output will be placed in the sysroot/linux/<architecture> directory, where <architecture> is either x86_64 or arm.
Windows
To build the project on Windows, you can use either native Windows compilation or Linux cross-compilation.
-
Native Windows Compilation: Run the following command on a Windows host:
./devops.sh build --platform=windows --arch=x86_64 -
Linux Cross-Compilation for Windows: Set up the cross-compilation environment on a Linux host and run:
./devops.sh build --platform=windows --arch=x86_64For details on setting up the Linux cross-compilation environment, refer to the Linux Cross-Compilation Setup Guide.
Android
To build the project for Android, use the following command:
./devops.sh build --platform=android --arch=arm64-v8a
Before building for Android, ensure that the Android NDK is installed. Follow the Installing Android NDK on Ubuntu guide for detailed instructions.
Mac OS
To build the project on macOS, use the following command:
./devops.sh build --platform=mac
Release Instructions
Linux
Release package
To create a release package for Linux, you can specify the architecture or use the default (x86_64):
# Default architecture (x86_64)
./devops.sh release --platform=linux
# Specify architecture (x86_64 or arm)
./devops.sh release --platform=linux --arch=x86_64
./devops.sh release --platform=linux --arch=arm
The release package will be created in the packages directory with a name like xtools_linux_<architecture>_v<version>.tar.gz.
Release docker image
sudo ./devops.sh docker --build=fruit-pomegranate --package-path=./packages/xtools_linux_x86_64_v2.15.0.241.tar.gz
sudo docker run -d --name fruit-pomegranate -p 12345:12345 fruit-pomegranate
./sysroot/linux/x86_64/bin/xtools node_cli --host=0.0.0.0 --service=12345 lookup all
Windows
To create a release package for Windows, you can specify the architecture (default is x86_64):
# Default architecture (x86_64)
./devops.sh release --platform=windows
# Specify architecture (x86_64)
./devops.sh release --platform=windows --arch=x86_64
The release package will be created in the packages directory with a name like xtools_windows_<architecture>_v<version>.zip.
Android
To create a release package for Android, specify the architecture (default is arm64-v8a):
# Default architecture (arm64-v8a)
./devops.sh release --platform=android
# Specify architecture (e.g., arm64-v8a)
./devops.sh release --platform=android --arch=arm64-v8a
The release package will be created in the packages directory with a name like xtools_android_<architecture>_v<version>.zip.
Other Platforms
To create a release package for other platforms, use the following command:
# Replace <platform> with mac or android
./devops.sh release --platform=<platform>
Deployment Instructions
To deploy the project, use the develop.sh script. This script simplifies the deployment process for various platforms.
Linux Deployment
To deploy the project to a Linux server, use the following command:
./devops.sh deploy -p=linux --host=<server_ip> --package-path=<path_to_package>
This command connects to the deployed service on the specified host (139.159.231.27) and service port (12345) to perform a lookup operation for all available nodes.
<server_ip>: Replace with the IP address of the target Linux server (e.g.,139.159.231.27).<path_to_package>: Replace with the path to the release package (e.g.,./packages/xtools_linux_x86_64_v2.14.0.125.tar.gz).
Example
./devops.sh deploy -p=linux --host=139.159.231.27 --package-path=./packages/xtools_linux_x86_64_v2.15.0.153.tar.gz
This command will deploy the specified package to the Linux server at 139.159.231.27.
Verification
After deploying the project to a Linux server, you can verify the deployment using the following command:
./sysroot/linux/x86_64/bin/xtools node_cli --host="139.159.231.27" --service="12345" lookup all
Android Deployment Example
To deploy the project to an Android device, use the following command:
./devops.sh deploy -p=android --package-path=<path_to_package>
<path_to_package>: Replace with the path to the release package (e.g.,./packages/xtools_android_arm64-v8a_v2.14.0.125.zip).
Example
./devops.sh deploy -p=android --package-path=./packages/xtools_android_arm64-v8a_v2.15.0.128.tar.gz
This command will deploy the specified package to the connected Android device.
User Guide
The following modules are included in the library. Click on a module name to view its detailed documentation:
- Argument Module: Handles command-line arguments and parameter parsing.
- Attacher Module: Platform-specific module for resource attachment (not available on ARM).
- Concurrent Module: Includes utilities for multithreading and synchronization, such as thread pools and mutexes.
- Core Module: Provides the foundation for object-oriented programming in C, including inheritance, polymorphism, and encapsulation.
- Crypto Module: Provides cryptographic utilities, such as encryption and decryption.
- Database Module: Platform-specific module for database operations (not available on ARM).
- Drivers Module: Provides abstractions for hardware drivers.
- Encoding Module: Handles data encoding and decoding, such as Base64 and JSON.
- Event Module: Supports event-driven programming models, including event registration, dispatching, and handling.
- Net Module: Offers networking capabilities, such as TCP/UDP socket programming and HTTP support.
- Node Module: Manages distributed nodes and their communication.
- Scripts Module: Provides scripting utilities for automation and integration.
- Stub Module: Handles stub generation for remote procedure calls (RPC).
- UI Module: Tools for building graphical user interfaces (under development).
Contact
The latest version of the library is available at GitHub.
If you encounter any issues or have questions, feel free to contact me via email at a1an1in@sina.com.
License
This software is licensed under the LGPL license.
Copyright (c) 2015-2020.
Related Skills
openpencil
2.0kThe world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.
HappyColorBlend
HappyColorBlendVibe Project Guidelines Project Overview HappyColorBlendVibe is a Figma plugin for color palette generation with advanced tint/shade blending capabilities. It allows designers to
Flyaro-waffle-app
Waffle Delight - Full Stack MERN Application Rules & Documentation Project Overview A comprehensive waffle delivery application built with MERN stack featuring premium UI/UX, admin management, a
ui-ux-pro-max-skill
57.0kAn AI SKILL that provide design intelligence for building professional UI/UX multiple platforms
