i want to auto create pages with shortcode when plugin is activated and delete when deactivated

The problem is a basic PHP problem rather than a WordPress problem.

wp_insert_post is expecting 'post_content' but you’ve given it '$post_content' and it needs a string as it’s value aka "[gd_shortcode]" not [gd_shortcode].

The same is true of your post status, it has a $ in it that should not be there.

See the examples at the official dev docs at https://developer.wordpress.org/reference/functions/wp_insert_post/ for proper usage of wp_insert_post