# Integrate SDK into your app Follow the steps below to integrate the Video SDK for Linux into your app and implement a delegate to listen for callback events. Be sure to follow the steps to download the Video SDK package [before you get started](/docs/video-sdk/linux/). Install the `gcc`, `c++ compiler` and the `make` utility. ```shell sudo apt install gcc sudo apt install g++ sudo apt install make ``` **Ensure you have the minimum version of Linux, either ubuntu16 or centos8.** ## Import the Video SDK libraries The Video SDK package includes two folders and several `.so` library files: - `h` — SDK's external header files. - `qt_libs` — QT libraries used by Linux Video SDK. - `*.so` files — library files for Linux. Refer to these files in your make file, or import them into your project. ## Initialize the SDK The SDK requires initialization before you can call any other functions. To initialize, create an instance of `IZoomVideoSDK` using `CreateZoomVideoSDKObj()`: _**You must call the Video SDK from the main thread.**_ ```cpp ZoomVideoSDK* video_sdk_obj = CreateZoomVideoSDKObj(); ``` Create an instance of `ZoomVideoSDKInitParams` and specify the initialization parameters: ```cpp ZoomVideoSDKInitParams init_params; init_params.domain = "https://.zoom.us"; init_params.enableLog = true; init_params.logFilePrefix = "prefix"; init_params.videoRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap; init_params.shareRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap; init_params.audioRawDataMemoryMode = ZoomVideoSDKRawDataMemoryModeHeap; init_params.enableIndirectRawdata = false; ``` Call the initialize function on the `IZoomVideoSDK` object and pass in the `ZoomVideoSDKInitParams` object: ```cpp ZoomVideoSDKErrors err = video_sdk_obj->initialize(init_params); if (err != ZoomVideoSDKErrors_Success) { return; } ``` Once the SDK is successfully initialized, you will be able to call the SDK functions. You can set up a listener for events such as when a user joins a session or leaves a session. ## Callback Events `IZoomVideoSDKDelegate` allows you to subscribe to callback events that provide status updates on the operations performed in your app that are related to the SDK. For example, you may want to receive notifications when a user has successfully joined or left a session. ## Implement a delegate To subscribe to these events, you must have your class inherit from the `IZoomVideoSDKDelegate` interface. This section will show you how to implement this delegate and assign it to the SDK instance. It also shows some examples of event handlers associated with the SDK. Add instance of `IZoomVideoSDKDelegate` to `IZoomVideoSDK` instance: ```cpp IZoomVideoSDKDelegate* listener = new ZoomVideoSDKDelegate(); video_sdk_obj->addListener(dynamic_cast(listener)); ``` ## Callback functions **Get notified of operation results and SDK errors:** ```cpp virtual void onError(ZoomVideoSDKErrors errorCode, int detailErrorCode) { printf("join session errorCode : %d detailErrorCode: %d\n", errorCode, detailErrorCode); }; ``` See the callback functions in the **Add features** sections for **Video**, **Audio**, and others, for more examples of callback functions.