наилучшая практика для предоставления C API, скрывающих внутренние функции [закрыто]

Я написал библиотеку C, которая состоит из нескольких файлов .h и .c. Я компилирую его как статическую библиотеку.

Я хотел бы предоставить пользователю только определенные функции, а остальные сделать его «неясным» настолько, насколько это возможно, чтобы сделать реверс-инжиниринг достаточно сложным.

В идеале моя библиотека должна состоять из:

1 - один файл .h с функциями, доступными только пользователю

2- myLibrary.a: настолько необратимый, насколько это возможно

Каковы лучшие практики для этого? Где мне искать, есть ли где-нибудь хороший учебник / книга?

Более конкретно:

для - 1

У меня уже есть все мои .h и .c работающие, и я хотел бы не менять их, перемещать объявления функций из .h в .c и переходить к циклическим ссылкам потенциальных pbs. Это возможно?

Например, это хорошая идея - создать новый файл .h, который я бы использовал только для распространения с моим .a? Это .h будет содержать копии функций, которые я хочу выставлять и пересылать объявления типов, которые я использую. Это хорошая идея?

для - 2

а) какие флаги gcc (или xcode) я должен знать (для удаления, отсутствия символов отладки и т. д.) б) хороший указатель, чтобы узнать, как сделать обфускацию кода?

Любая мысль поможет,

Спасибо баба